(svn r2908) If threaded saving fails or does not happen, sending subsequent messages might hang ottd. So don't send them :)
authorDarkvater
Fri, 02 Sep 2005 22:22:02 +0000
changeset 2382 5af5004feae4
parent 2381 de9053fe2a2c
child 2383 80ff60d10aed
(svn r2908) If threaded saving fails or does not happen, sending subsequent messages might hang ottd. So don't send them :)
saveload.c
--- a/saveload.c	Fri Sep 02 19:10:45 2005 +0000
+++ b/saveload.c	Fri Sep 02 22:22:02 2005 +0000
@@ -1283,6 +1283,8 @@
 	SaveFileDone();
 }
 
+static Thread* save_thread;
+
 /** We have written the whole game into memory, _save_pool, now find
  * and appropiate compressor and start writing to file.
  */
@@ -1294,7 +1296,7 @@
 	static byte *tmp = NULL;
 	uint32 hdr[2];
 
-	OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_START);
+	if (save_thread != NULL) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_START);
 
 	tmp = _sl.buf;
 
@@ -1341,13 +1343,10 @@
 	GetSavegameFormat("memory")->uninit_write(); // clean the memorypool
 	fclose(_sl.fh);
 
-	OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE);
+	if (save_thread != NULL) OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_DONE);
 	return NULL;
 }
 
-
-static Thread* save_thread;
-
 void WaitTillSaved(void)
 {
 	OTTDJoinThread(save_thread);
@@ -1413,7 +1412,7 @@
 			ShowInfoF("Load game failed: %s.", _sl.excpt_msg);
 			return SL_REINIT;
 		}
-		
+
 		ShowInfoF("Save game failed: %s.", _sl.excpt_msg);
 		return SL_ERROR;
 	}