Fixed resource leak when failing to mount a file that isn't an archive.

This commit is contained in:
Ryan C. Gordon 2014-08-19 02:28:13 -04:00
parent 4b906c1e5f
commit 53ef674270
1 changed files with 5 additions and 0 deletions

View File

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