|
@@ -285,13 +285,16 @@ static PHYSFS_Io *SZIP_openRead(void *opaque, const char *path)
|
|
|
&blockIndex, &outBuffer, &outBufferSize, &offset,
|
|
&blockIndex, &outBuffer, &outBufferSize, &offset,
|
|
|
&outSizeProcessed, alloc, alloc);
|
|
&outSizeProcessed, alloc, alloc);
|
|
|
GOTO_IF(rc != SZ_OK, szipErrorCode(rc), SZIP_openRead_failed);
|
|
GOTO_IF(rc != SZ_OK, szipErrorCode(rc), SZIP_openRead_failed);
|
|
|
|
|
+ GOTO_IF(outBuffer == NULL, PHYSFS_ERR_OUT_OF_MEMORY, SZIP_openRead_failed);
|
|
|
|
|
|
|
|
io->destroy(io);
|
|
io->destroy(io);
|
|
|
io = NULL;
|
|
io = NULL;
|
|
|
|
|
|
|
|
- buf = allocator.Malloc(outSizeProcessed);
|
|
|
|
|
|
|
+ buf = allocator.Malloc(outSizeProcessed ? outSizeProcessed : 1);
|
|
|
GOTO_IF(buf == NULL, PHYSFS_ERR_OUT_OF_MEMORY, SZIP_openRead_failed);
|
|
GOTO_IF(buf == NULL, PHYSFS_ERR_OUT_OF_MEMORY, SZIP_openRead_failed);
|
|
|
- memcpy(buf, outBuffer + offset, outSizeProcessed);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (outSizeProcessed > 0)
|
|
|
|
|
+ memcpy(buf, outBuffer + offset, outSizeProcessed);
|
|
|
|
|
|
|
|
alloc->Free(alloc, outBuffer);
|
|
alloc->Free(alloc, outBuffer);
|
|
|
outBuffer = NULL;
|
|
outBuffer = NULL;
|