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); } } }