Consistently use array count that has been flushed to 0 for NULL arrays

* This means we don't have a lingering size >0 for an array that won't
  be used for NULL. Mostly on read this is immaterial but on write it
  is significant.
This commit is contained in:
baldurk
2017-12-07 16:35:55 +00:00
parent 6659b2acb3
commit 6f9cff0c12
+10 -10
View File
@@ -243,7 +243,7 @@ public:
SDObject &obj = *m_StructureStack.back();
obj.type.basetype = SDBasic::Buffer;
obj.type.byteSize = byteSize;
obj.type.byteSize = count;
}
byte *tempAlloc = NULL;
@@ -255,9 +255,9 @@ public:
m_Write->AlignTo<ChunkAlignment>();
if(el)
m_Write->Write(el, byteSize);
m_Write->Write(el, count);
else
RDCASSERT(byteSize == 0);
RDCASSERT(count == 0);
}
else if(IsReading())
{
@@ -270,8 +270,8 @@ public:
#if !defined(__COVERITY__)
if(flags & SerialiserFlags::AllocateMemory)
{
if(byteSize > 0)
el = AllocAlignedBuffer(byteSize);
if(count > 0)
el = AllocAlignedBuffer(count);
else
el = NULL;
}
@@ -281,14 +281,14 @@ public:
// allocation.
if(el == NULL && ExportStructure() && m_ExportBuffers)
{
if(byteSize > 0)
el = tempAlloc = AllocAlignedBuffer(byteSize);
if(count > 0)
el = tempAlloc = AllocAlignedBuffer(count);
else
el = NULL;
}
#endif
m_Read->Read(el, byteSize);
m_Read->Read(el, count);
}
}
@@ -301,9 +301,9 @@ public:
obj.data.basic.u = m_StructuredFile->buffers.size();
bytebuf *alloc = new bytebuf;
alloc->resize((size_t)byteSize);
alloc->resize((size_t)count);
if(el)
memcpy(alloc->data(), el, (size_t)byteSize);
memcpy(alloc->data(), el, (size_t)count);
m_StructuredFile->buffers.push_back(alloc);
}