feat: Allow opening special files with no specific size

This commit is contained in:
WerWolv
2025-12-30 09:34:37 +01:00
parent b835c48a0c
commit 73a17308cc
2 changed files with 24 additions and 6 deletions

View File

@@ -274,12 +274,30 @@ namespace hex::plugin::builtin {
if (directAccess) {
m_loadedIntoMemory = false;
} else {
m_data = m_file.readVectorAtomic(0x00, m_fileSize);
if (!m_data.empty()) {
m_changeTracker = wolv::io::ChangeTracker(m_file);
m_changeTracker.startTracking([this]{ this->handleFileChange(); });
m_file.close();
if (m_fileSize == 0) {
while (true) {
constexpr static ssize_t ChunkSize = 1_MiB;
auto startSize = m_data.size();
m_data.resize(startSize + ChunkSize);
auto result = m_file.readBuffer(m_data.data() + startSize, ChunkSize);
if (result <= 0) {
break;
} else if (result < ChunkSize) {
m_data.resize(startSize + result);
break;
}
}
m_fileSize = m_data.size();
m_loadedIntoMemory = true;
} else {
m_data = m_file.readVectorAtomic(0x00, m_fileSize);
if (!m_data.empty()) {
m_changeTracker = wolv::io::ChangeTracker(m_file);
m_changeTracker.startTracking([this]{ this->handleFileChange(); });
m_file.close();
m_loadedIntoMemory = true;
}
}
}
}