From 7c2e1b626dc7a9ba33c07e879c8785303deedf48 Mon Sep 17 00:00:00 2001 From: rwjuk Date: Wed, 5 Jul 2017 22:08:02 +0100 Subject: [PATCH 1/4] Fix #5800: Crash when opening server from command line --- src/openrct2/game.c | 1 + src/openrct2/peep/peep.c | 2 +- src/openrct2/rct2.c | 8 ++++++++ src/openrct2/ride/vehicle.c | 2 +- src/openrct2/world/sprite.c | 3 +++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/openrct2/game.c b/src/openrct2/game.c index 19f8c1aaf7..42d0337330 100644 --- a/src/openrct2/game.c +++ b/src/openrct2/game.c @@ -1129,6 +1129,7 @@ bool game_load_save(const utf8 *path) network_send_map(); } + // This ensures that the newly loaded save reflects the user's // 'show real names of guests' option, now that it's a global setting peep_update_names(gConfigGeneral.show_real_names_of_guests); diff --git a/src/openrct2/peep/peep.c b/src/openrct2/peep/peep.c index 99b36b2696..672b1c8685 100644 --- a/src/openrct2/peep/peep.c +++ b/src/openrct2/peep/peep.c @@ -6945,7 +6945,7 @@ void peep_update_crowd_noise() return; viewport = g_music_tracking_viewport; - if (viewport == (rct_viewport*)-1) + if (viewport == NULL || viewport == (rct_viewport*)-1) return; // Count the number of peeps visible diff --git a/src/openrct2/rct2.c b/src/openrct2/rct2.c index 4819822e9f..d9ec33503f 100644 --- a/src/openrct2/rct2.c +++ b/src/openrct2/rct2.c @@ -338,6 +338,14 @@ bool rct2_open_file(const char *path) if (ParkLoadResult_GetError(result) == PARK_LOAD_ERROR_OK) { ParkLoadResult_Delete(result); gFirstTimeSaving = false; + if (network_get_mode() == NETWORK_MODE_CLIENT) { + network_close(); + } + game_load_init(); + if (network_get_mode() == NETWORK_MODE_SERVER) { + network_send_map(); + } + peep_update_names(gConfigGeneral.show_real_names_of_guests); return true; } else { diff --git a/src/openrct2/ride/vehicle.c b/src/openrct2/ride/vehicle.c index 1ea0ccd2d0..6f0cdc4400 100644 --- a/src/openrct2/ride/vehicle.c +++ b/src/openrct2/ride/vehicle.c @@ -802,7 +802,7 @@ void vehicle_sounds_update() } } g_music_tracking_viewport = viewport; - if (viewport != (rct_viewport*)-1) { + if (viewport != NULL && viewport != (rct_viewport*)-1) { if (window) { gWindowAudioExclusive = window; gVolumeAdjustZoom = 0; diff --git a/src/openrct2/world/sprite.c b/src/openrct2/world/sprite.c index e313a71106..29bdb90398 100644 --- a/src/openrct2/world/sprite.c +++ b/src/openrct2/world/sprite.c @@ -561,6 +561,9 @@ void sprite_move(sint16 x, sint16 y, sint16 z, rct_sprite *sprite) rct_sprite *sprite2 = get_sprite(*spriteIndex); while (sprite != sprite2) { spriteIndex = &sprite2->unknown.next_in_quadrant; + if (*spriteIndex == SPRITE_INDEX_NULL) { + break; + } sprite2 = get_sprite(*spriteIndex); } } From e7512c58acc031e7887bc2345c7b55f05f81a3ba Mon Sep 17 00:00:00 2001 From: rwjuk Date: Wed, 5 Jul 2017 22:47:53 +0100 Subject: [PATCH 2/4] Fix whitespace --- src/openrct2/game.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/openrct2/game.c b/src/openrct2/game.c index 42d0337330..19f8c1aaf7 100644 --- a/src/openrct2/game.c +++ b/src/openrct2/game.c @@ -1129,7 +1129,6 @@ bool game_load_save(const utf8 *path) network_send_map(); } - // This ensures that the newly loaded save reflects the user's // 'show real names of guests' option, now that it's a global setting peep_update_names(gConfigGeneral.show_real_names_of_guests); From ab6d4ee240bd87a64bc3cdc14ec284ef1dd22d45 Mon Sep 17 00:00:00 2001 From: rwjuk Date: Wed, 5 Jul 2017 23:54:43 +0100 Subject: [PATCH 3/4] Fix black screen on loading file with invalid extension --- src/openrct2/rct2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/rct2.c b/src/openrct2/rct2.c index d9ec33503f..e3d5d4db98 100644 --- a/src/openrct2/rct2.c +++ b/src/openrct2/rct2.c @@ -392,7 +392,7 @@ bool rct2_open_file(const char *path) return false; } } - + title_load(); return false; } From 22d0cb99f967bfd5f5b4381d419ee87cf9f01e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Thu, 6 Jul 2017 23:25:38 +0200 Subject: [PATCH 4/4] Load title sequence when invalid path was given --- src/openrct2/rct2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openrct2/rct2.c b/src/openrct2/rct2.c index e3d5d4db98..79d02b3ab7 100644 --- a/src/openrct2/rct2.c +++ b/src/openrct2/rct2.c @@ -329,6 +329,7 @@ bool rct2_open_file(const char *path) { char *extension = strrchr(path, '.'); if (extension == NULL) { + title_load(); return false; } extension++;