Check to see if the file exists in the base path before returning it

main
Sam Lantinga 2022-05-18 09:59:12 -07:00
parent c4cf63f812
commit 0ffd985972
1 changed files with 13 additions and 4 deletions

View File

@ -30,6 +30,7 @@ GetNearbyFilename(const char *file)
base = SDL_GetBasePath(); base = SDL_GetBasePath();
if (base != NULL) { if (base != NULL) {
SDL_RWops *rw;
size_t len = SDL_strlen(base) + SDL_strlen(pathsep) + SDL_strlen(file) + 1; size_t len = SDL_strlen(base) + SDL_strlen(pathsep) + SDL_strlen(file) + 1;
path = SDL_malloc(len); path = SDL_malloc(len);
@ -42,13 +43,21 @@ GetNearbyFilename(const char *file)
SDL_snprintf(path, len, "%s%s%s", base, pathsep, file); SDL_snprintf(path, len, "%s%s%s", base, pathsep, file);
SDL_free(base); SDL_free(base);
} else {
path = SDL_strdup(file); rw = SDL_RWFromFile(path, "rb");
if (path == NULL) { if (rw) {
SDL_OutOfMemory(); SDL_RWclose(rw);
return path;
} }
/* Couldn't find the file in the base path */
SDL_free(path);
} }
path = SDL_strdup(file);
if (path == NULL) {
SDL_OutOfMemory();
}
return path; return path;
} }