From 70a855c395310a8a8a9ad651086bf13d39cc3940 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Sun, 29 Jan 2017 13:03:23 -0500 Subject: [PATCH] Fix #5029: Invalid window limit can cause crash #5121 --- src/openrct2/config.c | 9 +++++++++ src/openrct2/interface/window.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/openrct2/config.c b/src/openrct2/config.c index 10cdc50496..14fda9f74a 100644 --- a/src/openrct2/config.c +++ b/src/openrct2/config.c @@ -544,6 +544,15 @@ bool config_open(const utf8string path) free(lineBuffer); SDL_RWclose(file); + + // Window limit must be kept within valid range. + if (gConfigGeneral.window_limit < WINDOW_LIMIT_MIN) { + gConfigGeneral.window_limit = WINDOW_LIMIT_MIN; + } + else if (gConfigGeneral.window_limit > WINDOW_LIMIT_MAX) { + gConfigGeneral.window_limit = WINDOW_LIMIT_MAX; + } + return true; } diff --git a/src/openrct2/interface/window.c b/src/openrct2/interface/window.c index 68cd3c76a9..0ef0275cd4 100644 --- a/src/openrct2/interface/window.c +++ b/src/openrct2/interface/window.c @@ -379,7 +379,7 @@ static void window_close_surplus(sint32 cap, sint8 avoid_classification) void window_set_window_limit(sint32 value) { sint32 prev = gConfigGeneral.window_limit; - sint32 val = clamp(value, WINDOW_LIMIT_MIN, WINDOW_LIMIT_MAX); + sint32 val = clamp(WINDOW_LIMIT_MIN, value, WINDOW_LIMIT_MAX); gConfigGeneral.window_limit = val; config_save_default(); // Checks if value decreases and then closes surplus