summaryrefslogtreecommitdiff
path: root/src/fs/virtfs
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/virtfs')
-rw-r--r--src/fs/virtfs/virtfs1_unittest.cc6
-rw-r--r--src/fs/virtfs/virtfsdir.cpp6
-rw-r--r--src/fs/virtfs/virtfsfuncs.h2
-rw-r--r--src/fs/virtfs/virtfszip.cpp8
4 files changed, 13 insertions, 9 deletions
diff --git a/src/fs/virtfs/virtfs1_unittest.cc b/src/fs/virtfs/virtfs1_unittest.cc
index 1ddada282..a3b1b56cc 100644
--- a/src/fs/virtfs/virtfs1_unittest.cc
+++ b/src/fs/virtfs/virtfs1_unittest.cc
@@ -2105,9 +2105,9 @@ TEST_CASE("VirtFs1 getFilesWithDir2")
VirtFs::getFilesWithDir(pathJoin("evol", "icons"), list);
REQUIRE(list.size() == 3);
- REQUIRE(inList(list, pathJoin("evol" , "icons"), "evol-client.ico"));
- REQUIRE(inList(list, pathJoin("evol" , "icons"), "evol-client.png"));
- REQUIRE(inList(list, pathJoin("evol" , "icons"), "evol-client.xpm"));
+ REQUIRE(inList(list, pathJoin("evol", "icons"), "evol-client.ico"));
+ REQUIRE(inList(list, pathJoin("evol", "icons"), "evol-client.png"));
+ REQUIRE(inList(list, pathJoin("evol", "icons"), "evol-client.xpm"));
VirtFs::unmountDir(prefix + "data");
}
diff --git a/src/fs/virtfs/virtfsdir.cpp b/src/fs/virtfs/virtfsdir.cpp
index 223b45e1d..902e686c0 100644
--- a/src/fs/virtfs/virtfsdir.cpp
+++ b/src/fs/virtfs/virtfsdir.cpp
@@ -485,13 +485,15 @@ namespace VirtFsDir
if (fstat(fd, &statbuf) == -1)
{
reportAlways("VirtFsDir::fileLength error.");
- return -1;
+ if (fd != FILEHDEFAULT)
+ FILECLOSE(fd);
+ return nullptr;
}
fileSize = static_cast<int>(statbuf.st_size);
#endif // USE_FILE_FOPEN
// Allocate memory and load the file
- char *restrict const buffer = new char[fileSize];
+ char *restrict const buffer = new char[CAST_SIZE(fileSize)];
if (fileSize > 0)
buffer[fileSize - 1] = 0;
diff --git a/src/fs/virtfs/virtfsfuncs.h b/src/fs/virtfs/virtfsfuncs.h
index 9f164c865..eb617ebd4 100644
--- a/src/fs/virtfs/virtfsfuncs.h
+++ b/src/fs/virtfs/virtfsfuncs.h
@@ -44,6 +44,8 @@ struct VirtFsFuncs final
getRealDir(nullptr),
enumerate(nullptr),
getFiles(nullptr),
+ getFilesWithDir(nullptr),
+ getDirs(nullptr),
isDirectory(nullptr),
openRead(nullptr),
openWrite(nullptr),
diff --git a/src/fs/virtfs/virtfszip.cpp b/src/fs/virtfs/virtfszip.cpp
index 76ee69093..7d2f0e8b6 100644
--- a/src/fs/virtfs/virtfszip.cpp
+++ b/src/fs/virtfs/virtfszip.cpp
@@ -565,15 +565,15 @@ namespace VirtFsZip
reportAlways("VirtFsZip::read buffer is null");
return 0;
}
- const uint32_t pos = CAST_S32(file->mPos);
- const uint32_t sz = CAST_S32(file->mSize);
+ const size_t pos = file->mPos;
+ const size_t sz = file->mSize;
// if outside of buffer, return
if (pos >= sz)
return 0;
// pointer to start for buffer ready to read
const uint8_t *restrict const memPtr = file->mBuf + pos;
// left buffer size from pos to end
- const uint32_t memSize = sz - pos;
+ const uint32_t memSize = CAST_U32(sz - pos);
// number of objects possible to read
uint32_t memCount = memSize / objSize;
if (memCount == 0)
@@ -582,7 +582,7 @@ namespace VirtFsZip
if (memCount > objCount)
memCount = objCount;
// number of bytes to read from buffer
- const uint32_t memEnd = memCount * objSize;
+ const size_t memEnd = memCount * objSize;
memcpy(buffer, memPtr, memEnd);
file->mPos += memEnd;
return memCount;