mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-23 22:37:55 +02:00
fix CBufferedStream::ensureSize growth & read semantics (compat for 'A War' map)
This commit is contained in:
@@ -65,10 +65,10 @@ void CBufferedStream::ensureSize(si64 size)
|
||||
while(static_cast<si64>(buffer.size()) < size && !endOfFileReached)
|
||||
{
|
||||
si64 initialSize = buffer.size();
|
||||
si64 currentStep = std::min<si64>(size, buffer.size());
|
||||
si64 need = size - buffer.size();
|
||||
// to avoid large number of calls at start
|
||||
// this is often used to load h3m map headers, most of which are ~300 bytes in size
|
||||
vstd::amax(currentStep, 512);
|
||||
si64 currentStep = std::min<si64>(need, std::max<si64>(initialSize, si64{512}));
|
||||
|
||||
buffer.resize(initialSize + currentStep);
|
||||
|
||||
|
||||
@@ -199,9 +199,11 @@ RoadId MapReaderH3M::readRoad()
|
||||
|
||||
RiverId MapReaderH3M::readRiver()
|
||||
{
|
||||
RiverId result(readInt8());
|
||||
assert(result.getNum() <= features.riversCount);
|
||||
return result;
|
||||
const uint8_t raw = readInt8();
|
||||
// Keep low 3 bits as river type (0..4); discard high-bit flags set by some editors (HotA ?)
|
||||
const uint8_t type = raw & 0x07;
|
||||
assert(type <= features.riversCount);
|
||||
return RiverId(type);
|
||||
}
|
||||
|
||||
PrimarySkill MapReaderH3M::readPrimary()
|
||||
|
||||
Reference in New Issue
Block a user