diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 13:16:33 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 13:16:33 +0000 |
| commit | 57b2c49d571ac160d03b9bc30b6eb72976bfe82a (patch) | |
| tree | 9e39336ac1976472b2a6a4fd69fa8e3b7f41bd9e /src/engine/client/ec_client.c | |
| parent | feade98dae813a1cdff48c4f15b3c01fb1fd3e8d (diff) | |
| download | zcatch-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/ec_client.c')
| -rw-r--r-- | src/engine/client/ec_client.c | 15 |
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) |