Fix #619
This fixes handling of status codes from PHYSFS functions and seems to solve crashes like in #619master
parent
3335be42de
commit
a1d2ca50a8
|
@ -128,22 +128,22 @@ int CSDLFileWrapper::SDLSeek(SDL_RWops *context, int offset, int whence)
|
||||||
default:
|
default:
|
||||||
case RW_SEEK_SET:
|
case RW_SEEK_SET:
|
||||||
{
|
{
|
||||||
int result = PHYSFS_seek(file, offset);
|
auto result = PHYSFS_seek(file, offset);
|
||||||
return result > 0 ? offset : -1;
|
return (result != 0) ? offset : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RW_SEEK_CUR:
|
case RW_SEEK_CUR:
|
||||||
{
|
{
|
||||||
int position = offset + PHYSFS_tell(file);
|
int position = offset + PHYSFS_tell(file);
|
||||||
int result = PHYSFS_seek(file, position);
|
auto result = PHYSFS_seek(file, position);
|
||||||
return result > 0 ? position : -1;
|
return (result != 0) ? position : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RW_SEEK_END:
|
case RW_SEEK_END:
|
||||||
{
|
{
|
||||||
int position = PHYSFS_fileLength(file) - offset;
|
int position = PHYSFS_fileLength(file) - offset;
|
||||||
int result = PHYSFS_seek(file, position);
|
auto result = PHYSFS_seek(file, position);
|
||||||
return result > 0 ? position : -1;
|
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);
|
PHYSFS_File *file = static_cast<PHYSFS_File *>(context->hidden.unknown.data1);
|
||||||
SDL_memset(ptr, 0, size * maxnum);
|
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;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue