about summary refs log tree commit diff
path: root/src/engine/client
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2009-06-15 13:16:33 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2009-06-15 13:16:33 +0000
commit57b2c49d571ac160d03b9bc30b6eb72976bfe82a (patch)
tree9e39336ac1976472b2a6a4fd69fa8e3b7f41bd9e /src/engine/client
parentfeade98dae813a1cdff48c4f15b3c01fb1fd3e8d (diff)
downloadzcatch-57b2c49d571ac160d03b9bc30b6eb72976bfe82a.tar.gz
zcatch-57b2c49d571ac160d03b9bc30b6eb72976bfe82a.zip
fixed so that the demo player doesn't crash when the map isn't found
Diffstat (limited to 'src/engine/client')
-rw-r--r--src/engine/client/ec_client.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c
index 07117b37..e741958f 100644
--- a/src/engine/client/ec_client.c
+++ b/src/engine/client/ec_client.c
@@ -1902,9 +1902,10 @@ static void con_addfavorite(void *result, void *user_data)
 		client_serverbrowse_addfavorite(addr);
 }
 
-void client_demoplayer_play(const char *filename)
+const char *client_demoplayer_play(const char *filename)
 {
 	int crc;
+	const char *error;
 	client_disconnect();
 	netclient_error_string_reset(net);
 	
@@ -1912,14 +1913,20 @@ void client_demoplayer_play(const char *filename)
 	demorec_playback_registercallbacks(client_democallback_snapshot, client_democallback_message);
 	
 	if(demorec_playback_load(filename))
-		return;
+		return "error loading demo";
 	
 	/* load map */
 	crc = (demorec_playback_info()->header.crc[0]<<24)|
 		(demorec_playback_info()->header.crc[1]<<16)|
 		(demorec_playback_info()->header.crc[2]<<8)|
 		(demorec_playback_info()->header.crc[3]);
-	client_load_map_search(demorec_playback_info()->header.map, crc);
+	error = client_load_map_search(demorec_playback_info()->header.map, crc);
+	if(error)
+	{
+		client_disconnect_with_reason(error);	
+		return error;
+	}
+	
 	modc_connected();
 	
 	/* setup buffers */	
@@ -1943,6 +1950,8 @@ void client_demoplayer_play(const char *filename)
 	
 	demorec_playback_play();
 	modc_entergame();
+	
+	return 0;
 }
 
 static void con_play(void *result, void *user_data)