From 9956b804d2a053bc7b8da5d7e15a046413b14736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Fri, 22 Apr 2016 13:05:55 +0200 Subject: [PATCH 1/2] Don't parse invalid names from highscores fixes #3333 --- src/scenario_list.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/scenario_list.c b/src/scenario_list.c index 9e10f635d6..8284723fcf 100644 --- a/src/scenario_list.c +++ b/src/scenario_list.c @@ -432,6 +432,9 @@ static bool scenario_scores_load() SDL_RWread(file, &highscore->timestamp, sizeof(highscore->timestamp), 1); // Attach highscore to correct scenario entry + if (highscore->fileName == NULL) { + continue; + } scenario_index_entry *scenarioIndexEntry = scenario_list_find_by_filename(highscore->fileName); if (scenarioIndexEntry != NULL) { scenarioIndexEntry->highscore = highscore; From 65ca8b9cb1b7a506a47e2b4ba36b14678cad20aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Fri, 22 Apr 2016 22:02:34 +0200 Subject: [PATCH 2/2] Test for object validity Apparently it can fail for some: https://openrct2.org/forums/topic/1175-wont-open-on-mac/#comment-5742 --- src/object.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/object.c b/src/object.c index ad4b36ba1a..12a01acece 100644 --- a/src/object.c +++ b/src/object.c @@ -92,6 +92,10 @@ int object_load_file(int groupIndex, const rct_object_entry *entry, int* chunkSi *chunkSize = sawyercoding_read_chunk(rw, chunk); } SDL_RWclose(rw); + if (chunk == NULL) { + log_error("Failed to load object from %s of size %d", path, *chunkSize); + return 0; + } int calculatedChecksum = object_calculate_checksum(&openedEntry, chunk, *chunkSize);