Fixed storing a key in the persistent string hashtable that's about to be freed

This commit is contained in:
Sam Lantinga
2024-07-27 09:34:49 -07:00
parent 1d5f9c7b92
commit 9da58e9fb7

View File

@@ -352,16 +352,16 @@ const char *SDL_GetPersistentString(const char *string)
SDL_SetTLS(&SDL_string_storage, strings, SDL_FreePersistentStrings);
}
const void *retval;
if (!SDL_FindInHashTable(strings, string, &retval)) {
const char *retval;
if (!SDL_FindInHashTable(strings, string, (const void **)&retval)) {
char *new_string = SDL_strdup(string);
if (!new_string) {
return NULL;
}
// If the hash table insert fails, at least we can return the string we allocated
SDL_InsertIntoHashTable(strings, new_string, new_string);
retval = new_string;
SDL_InsertIntoHashTable(strings, string, retval);
}
return (const char *)retval;
return retval;
}