This fixes handling of status codes from PHYSFS functions and seems to
solve crashes like in #619
master
Piotr Dziwinski 2015-08-30 22:11:50 +02:00
parent 3335be42de
commit a1d2ca50a8
1 changed files with 8 additions and 7 deletions

View File

@ -128,22 +128,22 @@ int CSDLFileWrapper::SDLSeek(SDL_RWops *context, int offset, int whence)
default:
case RW_SEEK_SET:
{
int result = PHYSFS_seek(file, offset);
return result > 0 ? offset : -1;
auto result = PHYSFS_seek(file, offset);
return (result != 0) ? offset : -1;
}
case RW_SEEK_CUR:
{
int position = offset + PHYSFS_tell(file);
int result = PHYSFS_seek(file, position);
return result > 0 ? position : -1;
auto result = PHYSFS_seek(file, position);
return (result != 0) ? position : -1;
}
case RW_SEEK_END:
{
int position = PHYSFS_fileLength(file) - offset;
int result = PHYSFS_seek(file, position);
return result > 0 ? position : -1;
auto result = PHYSFS_seek(file, position);
return (result != 0) ? position : -1;
}
}
}
@ -158,7 +158,8 @@ int CSDLFileWrapper::SDLRead(SDL_RWops *context, void *ptr, int size, int maxnum
PHYSFS_File *file = static_cast<PHYSFS_File *>(context->hidden.unknown.data1);
SDL_memset(ptr, 0, size * maxnum);
return PHYSFS_read(file, ptr, size, maxnum);
auto result = PHYSFS_read(file, ptr, size, maxnum);
return (result >= 0) ? result : 0;
}
return 0;