Make sure we set datasize on error in SDL_LoadFile_RW()
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user