diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index ab37994a9..7c3c34d86 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -625,14 +625,14 @@ void SDL_DestroyRW(SDL_RWops *context) void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, SDL_bool freesrc) { const int FILE_CHUNK_SIZE = 1024; - Sint64 size, size_total; + Sint64 size, size_total = 0; size_t size_read; char *data = NULL, *newdata; SDL_bool loading_chunks = SDL_FALSE; if (!src) { SDL_InvalidParamError("src"); - return NULL; + goto done; } size = SDL_RWsize(src); @@ -677,12 +677,12 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, SDL_bool freesrc) break; } - if (datasize) { - *datasize = (size_t)size_total; - } data[size_total] = '\0'; done: + if (datasize) { + *datasize = (size_t)size_total; + } if (freesrc && src) { SDL_RWclose(src); }