From 627657217e9c74ca0ed622cb5df122f555fa8070 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 22 Aug 2014 13:31:02 +0200 Subject: Uic: Fix memory leaks Fix some memory leaks in uic. These break the Qt build with clangs address sanitizer feature enabled as Clang will cause uic to fail when it detects these leaks. This in turn will stop the Qt build. Change-Id: I6794b29f5a36fc8a2d59cf36f6d7459f3f50d56d Reviewed-by: Friedemann Kleint --- src/tools/uic/cpp/cppwriteinitialization.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/tools/uic/cpp/cppwriteinitialization.cpp') diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index 9b1903b136..3c0d98f33c 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -921,6 +921,7 @@ void WriteInitialization::acceptLayout(DomLayout *node) m_layoutMarginType = SubLayoutMargin; DomPropertyList propList = node->elementProperty(); + DomPropertyList newPropList; if (m_layoutWidget) { bool left, top, right, bottom; left = top = right = bottom = false; @@ -940,31 +941,38 @@ void WriteInitialization::acceptLayout(DomLayout *node) DomProperty *p = new DomProperty(); p->setAttributeName(QLatin1String("leftMargin")); p->setElementNumber(0); - propList.append(p); + newPropList.append(p); } if (!top) { DomProperty *p = new DomProperty(); p->setAttributeName(QLatin1String("topMargin")); p->setElementNumber(0); - propList.append(p); + newPropList.append(p); } if (!right) { DomProperty *p = new DomProperty(); p->setAttributeName(QLatin1String("rightMargin")); p->setElementNumber(0); - propList.append(p); + newPropList.append(p); } if (!bottom) { DomProperty *p = new DomProperty(); p->setAttributeName(QLatin1String("bottomMargin")); p->setElementNumber(0); - propList.append(p); + newPropList.append(p); } m_layoutWidget = false; } + propList.append(newPropList); + writeProperties(varName, className, propList, WritePropertyIgnoreMargin|WritePropertyIgnoreSpacing); + // Clean up again: + propList.clear(); + qDeleteAll(newPropList); + newPropList.clear(); + m_layoutChain.push(node); TreeWalker::acceptLayout(node); m_layoutChain.pop(); -- cgit v1.2.3