From 625fada76f0c4cbabb189a9061acdec8287d9ce6 Mon Sep 17 00:00:00 2001 From: key2 Date: Wed, 22 Jul 2026 21:16:10 +0200 Subject: [PATCH] Initialize fRefCnt in rapidxml XML file implementations CXMLFileImpl and CXMLFileNodeImpl implement IVWUnknown reference counting manually but never initialized fRefCnt in their constructors. With typical glibc heap contents the garbage value is non-zero, so the objects are never destroyed (silent leak); on allocators that return zeroed pages (e.g. a fresh WebAssembly heap) Release() is entered with fRefCnt == 0 and triggers the 'fRefCnt > 0' assert for every node. --- src/rapidxmlsupport/XMLFileImpl.cpp | 1 + src/rapidxmlsupport/XMLFileNodeImpl.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/rapidxmlsupport/XMLFileImpl.cpp b/src/rapidxmlsupport/XMLFileImpl.cpp index 1c04d1c7..88f82531 100644 --- a/src/rapidxmlsupport/XMLFileImpl.cpp +++ b/src/rapidxmlsupport/XMLFileImpl.cpp @@ -16,6 +16,7 @@ using namespace VectorworksMVR::VWFC::Tools; // ---------------------------------------------------------------------------------------------------- CXMLFileImpl::CXMLFileImpl() { + fRefCnt = 0; } CXMLFileImpl::~CXMLFileImpl() diff --git a/src/rapidxmlsupport/XMLFileNodeImpl.cpp b/src/rapidxmlsupport/XMLFileNodeImpl.cpp index ed61d0a9..00995a4b 100644 --- a/src/rapidxmlsupport/XMLFileNodeImpl.cpp +++ b/src/rapidxmlsupport/XMLFileNodeImpl.cpp @@ -14,6 +14,7 @@ using namespace VectorworksMVR::VWFC::Tools; CXMLFileNodeImpl::CXMLFileNodeImpl() { fElement = nullptr; + fRefCnt = 0; } CXMLFileNodeImpl::~CXMLFileNodeImpl()