From 3e7a6adce5887db04d26438da64fdc4de308f4da Mon Sep 17 00:00:00 2001 From: Asher Gordon Date: Sat, 29 Jul 2023 15:27:46 -0400 Subject: [PATCH] midend_get_prefs: Don't free memory that we just copied elsewhere. We were using free_cfg(be_prefs) after we copied be_prefs to all_prefs, but we actually want to use sfree(be_prefs) since we don't want to free each element that has been copied. None of the games so far use string preferences, which is why they haven't been affected by this bug. --- midend.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/midend.c b/midend.c index 5344d88..d662d7a 100644 --- a/midend.c +++ b/midend.c @@ -2937,7 +2937,9 @@ static config_item *midend_get_prefs(midend *me, game_ui *ui) all_prefs[pos].type = C_END; if (be_prefs) - free_cfg(be_prefs); + /* We already copied each element, so don't free those with + free_cfg(). */ + sfree(be_prefs); return all_prefs; }