Make sure we set datasize on error in SDL_LoadFile_RW()

This commit is contained in:
Sam Lantinga
2024-01-27 12:19:27 -08:00
parent dff76bf295
commit 2d94b4f490

View File

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