Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixed resource leak when failing to mount a file that isn't an archive.
  • Loading branch information
icculus committed Aug 19, 2014
1 parent 4b906c1 commit 53ef674
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/physfs.c
Expand Up @@ -828,6 +828,7 @@ static DirHandle *openDirectory(PHYSFS_Io *io, const char *d, int forWriting)
DirHandle *retval = NULL;
const PHYSFS_Archiver **i;
const char *ext;
int created_io = 0;

assert((io != NULL) || (d != NULL));

Expand All @@ -841,6 +842,7 @@ static DirHandle *openDirectory(PHYSFS_Io *io, const char *d, int forWriting)

io = __PHYSFS_createNativeIo(d, forWriting ? 'w' : 'r');
BAIL_IF_MACRO(!io, ERRPASS, 0);
created_io = 1;
} /* if */

ext = find_filename_extension(d);
Expand All @@ -867,6 +869,9 @@ static DirHandle *openDirectory(PHYSFS_Io *io, const char *d, int forWriting)
retval = tryOpenDir(io, *i, d, forWriting);
} /* else */

if ((!retval) && (created_io))
io->destroy(io);

BAIL_IF_MACRO(!retval, PHYSFS_ERR_UNSUPPORTED, NULL);
return retval;
} /* openDirectory */
Expand Down

0 comments on commit 53ef674

Please sign in to comment.