mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-27 23:37:05 -05:00
feat: Allow opening special files with no specific size
This commit is contained in:
2
lib/external/libwolv
vendored
2
lib/external/libwolv
vendored
Submodule lib/external/libwolv updated: 055e147804...afc2810c91
@@ -274,12 +274,30 @@ namespace hex::plugin::builtin {
|
|||||||
if (directAccess) {
|
if (directAccess) {
|
||||||
m_loadedIntoMemory = false;
|
m_loadedIntoMemory = false;
|
||||||
} else {
|
} else {
|
||||||
m_data = m_file.readVectorAtomic(0x00, m_fileSize);
|
if (m_fileSize == 0) {
|
||||||
if (!m_data.empty()) {
|
while (true) {
|
||||||
m_changeTracker = wolv::io::ChangeTracker(m_file);
|
constexpr static ssize_t ChunkSize = 1_MiB;
|
||||||
m_changeTracker.startTracking([this]{ this->handleFileChange(); });
|
auto startSize = m_data.size();
|
||||||
m_file.close();
|
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user