Skip to content

Commit

Permalink
SDL_rwops.c: stdio_seek - skip API call for RW_SEEK_CUR with 0 offset
Browse files Browse the repository at this point in the history
  • Loading branch information
ds-sloth committed Aug 16, 2024
1 parent 8fcbf97 commit 62af67d
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/file/SDL_rwops.c
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,7 @@ stdio_size(SDL_RWops * context)
static Sint64 SDLCALL stdio_seek(SDL_RWops *context, Sint64 offset, int whence)
{
int stdiowhence;
SDL_bool is_noop;

switch (whence) {
case RW_SEEK_SET:
Expand All @@ -390,7 +391,10 @@ static Sint64 SDLCALL stdio_seek(SDL_RWops *context, Sint64 offset, int whence)
}
#endif

if (fseek(context->hidden.stdio.fp, (fseek_off_t)offset, stdiowhence) == 0) {
/* don't make a possibly-costly API call for the noop seek from SDL_RWtell */
is_noop = (whence == RW_SEEK_CUR && offset == 0);

if (is_noop || 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 62af67d

Please sign in to comment.