From f40490c04914d9d4859d5c87cbe9417e7e36067b Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 5 Jun 2020 19:36:02 +0100 Subject: [PATCH] Avoid underflow when calculating padding bytes --- qrenderdoc/Code/BufferFormatter.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/qrenderdoc/Code/BufferFormatter.cpp b/qrenderdoc/Code/BufferFormatter.cpp index 808b8fc8a..c1717b6c0 100644 --- a/qrenderdoc/Code/BufferFormatter.cpp +++ b/qrenderdoc/Code/BufferFormatter.cpp @@ -933,11 +933,12 @@ QString BufferFormatter::DeclareStruct(QList &declaredStructs, const QS lastMemberStart += lastChild->byteOffset; } - const uint32_t size = GetVarSize(*lastChild); - uint32_t padBytes = requiredByteStride - (lastMemberStart + size); + const uint32_t structEnd = lastMemberStart + GetVarSize(*lastChild); - if(padBytes > 0) - ret += lit(" ") + DeclarePaddingBytes(padBytes); + if(requiredByteStride > structEnd) + ret += lit(" ") + DeclarePaddingBytes(requiredByteStride - structEnd); + else + qCritical() << "Unexpected stride overlow at struct" << name; } ret += lit("}\n");