From 4438fc65897b21a667a1dd4e5dce3a6b42ec40f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 6 Feb 2020 17:06:56 +0100 Subject: [PATCH] runtime_loader: code clean up after hrev53827 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit avoid double free in destructor. Change-Id: I28bd412b2323c3d80e63711885e87dd64e6165fc Reviewed-on: https://review.haiku-os.org/c/haiku/+/2224 Reviewed-by: Adrien Destugues Reviewed-by: Axel Dörfler --- src/system/runtime_loader/elf_symbol_lookup.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/system/runtime_loader/elf_symbol_lookup.h b/src/system/runtime_loader/elf_symbol_lookup.h index dbe5251c72..b82a2fe3f6 100644 --- a/src/system/runtime_loader/elf_symbol_lookup.h +++ b/src/system/runtime_loader/elf_symbol_lookup.h @@ -69,14 +69,17 @@ struct SymbolLookupCache { size_t elementCount = (fTableSize + 31) / 32; fValuesResolved = (uint32*)malloc(4 * elementCount); - if (fValuesResolved != NULL) - memset(fValuesResolved, 0, 4 * elementCount); if (fValues == NULL || fDSOs == NULL || fValuesResolved == NULL) { free(fValuesResolved); + fValuesResolved = NULL; free(fValues); + fValues = NULL; free(fDSOs); + fDSOs = NULL; fTableSize = 0; + } else { + memset(fValuesResolved, 0, 4 * elementCount); } } }