Skip to content

Commit

Permalink
Fixed bug 4820 - SDL assumes RW_SEEK_SET == SEEK_SET
Browse files Browse the repository at this point in the history
  • Loading branch information
1bsyl committed Oct 10, 2019
1 parent a747106 commit 97901b9
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/file/SDL_rwops.c
Expand Up @@ -361,13 +361,29 @@ stdio_size(SDL_RWops * context)
static Sint64 SDLCALL
stdio_seek(SDL_RWops * context, Sint64 offset, int whence)
{
int stdiowhence;

switch (whence) {
case RW_SEEK_SET:
stdiowhence = SEEK_SET;
break;
case RW_SEEK_CUR:
stdiowhence = SEEK_CUR;
break;
case RW_SEEK_END:
stdiowhence = SEEK_END;
break;
default:
return SDL_SetError("Unknown value for 'whence'");
}

#if defined(FSEEK_OFF_MIN) && defined(FSEEK_OFF_MAX)
if (offset < (Sint64)(FSEEK_OFF_MIN) || offset > (Sint64)(FSEEK_OFF_MAX)) {
return SDL_SetError("Seek offset out of range");
}
#endif

if (fseek(context->hidden.stdio.fp, (fseek_off_t)offset, whence) == 0) {
if (fseek(context->hidden.stdio.fp, (fseek_off_t)offset, stdiowhence) == 0) {
Sint64 pos = ftell(context->hidden.stdio.fp);
if (pos < 0) {
return SDL_SetError("Couldn't get stream offset");
Expand Down

0 comments on commit 97901b9

Please sign in to comment.