Skip to content
Permalink
Browse files
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 53ef674270733f7bfb7287804b0844d8acc99f9d
Showing with 5 additions and 0 deletions.
  1. +5 −0 src/physfs.c
@@ -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));

@@ -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);
@@ -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 */

0 comments on commit 53ef674

Please sign in to comment.