Common: Ensure VFS references not directly deleted.

This commit is contained in:
Unknown W. Brackets committed 2023-03-07 21:51:47 -08:00
1 parent 84b7df62ab
commit 2fce2df7f6
3 files changed
+12 -4

No files matched your search

+6 -1
View File
@@ -37,7 +37,10 @@ public:
class DirectoryReaderOpenFile : public VFSOpenFile {
public:
FILE *file;
~DirectoryReaderOpenFile() {
_dbg_assert_(file == nullptr);
}
FILE *file = nullptr;
};
VFSFileReference *DirectoryReader::GetFile(const char *path) {
@@ -80,6 +83,8 @@ size_t DirectoryReader::Read(VFSOpenFile *vfsOpenFile, void *buffer, size_t leng
void DirectoryReader::CloseFile(VFSOpenFile *vfsOpenFile) {
DirectoryReaderOpenFile *openFile = (DirectoryReaderOpenFile *)vfsOpenFile;
_dbg_assert_(openFile->file != nullptr);
fclose(openFile->file);
openFile->file = nullptr;
delete openFile;
}
-2
View File
@@ -42,8 +42,6 @@ public:
class VFSBackend : public VFSInterface {
public:
// use delete[] to release the returned memory.
virtual VFSFileReference *GetFile(const char *path) = 0;
virtual bool GetFileInfo(VFSFileReference *vfsReference, File::FileInfo *fileInfo) = 0;
virtual void ReleaseFile(VFSFileReference *vfsReference) = 0;
+6 -1
View File
@@ -197,8 +197,12 @@ public:
class ZipFileReaderOpenFile : public VFSOpenFile {
public:
~ZipFileReaderOpenFile() {
// Needs to be closed properly and unlocked.
_dbg_assert_(zf == nullptr);
}
ZipFileReaderFileReference *reference;
zip_file_t *zf;
zip_file_t *zf = nullptr;
};
static constexpr zip_uint64_t INVALID_ZIP_SIZE = 0xFFFFFFFFFFFFFFFFULL;
@@ -270,6 +274,7 @@ void ZipFileReader::CloseFile(VFSOpenFile *vfsOpenFile) {
ZipFileReaderOpenFile *file = (ZipFileReaderOpenFile *)vfsOpenFile;
_dbg_assert_(file->zf != nullptr);
zip_fclose(file->zf);
file->zf = nullptr;
lock_.unlock();
delete file;
}