changeset 16578:0ead157e23e1 draft

(svn r21308) -Fix [FS#4262] (r20933-ish): crash upon desync
author rubidium <rubidium@openttd.org>
date Tue, 23 Nov 2010 23:59:24 +0000
parents b3d6e1a13c8c
children 8288bb0298f8
files src/network/network.cpp
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -927,12 +927,16 @@
 
 		/* Make sure we are at the frame were the server is (quick-frames) */
 		if (_frame_counter_server > _frame_counter) {
+			/* Run a number of frames; when things go bad, get out. */
 			while (_frame_counter_server > _frame_counter) {
-				if (!ClientNetworkGameSocketHandler::GameLoop()) break;
+				if (!ClientNetworkGameSocketHandler::GameLoop()) return;
 			}
 		} else {
 			/* Else, keep on going till _frame_counter_max */
-			if (_frame_counter_max > _frame_counter) ClientNetworkGameSocketHandler::GameLoop();
+			if (_frame_counter_max > _frame_counter) {
+				/* Run one frame; if things went bad, get out. */
+				if (!ClientNetworkGameSocketHandler::GameLoop()) return;
+			}
 		}
 	}