Fix memory leak in qSetMessagePattern
authorKai Koehne <kai.koehne@theqtcompany.com>
Mon, 26 Jan 2015 14:21:12 +0000 (15:21 +0100)
committerJani Heikkinen <jani.heikkinen@theqtcompany.com>
Mon, 2 Feb 2015 10:26:42 +0000 (10:26 +0000)
We were leaking memory in case setPattern was called multiple
times

Task-number: QTBUG-43893
Change-Id: Icd9c214edea064aeaeb6f92a9c62836238ccd344
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
src/corelib/global/qlogging.cpp

index 50d35a6d841348862c2bff3e30c968f6f5737ba3..86ba0823984cee629de0e6a3727c8cbc82722293 100644 (file)
@@ -866,7 +866,7 @@ QMessagePattern::QMessagePattern()
 
 QMessagePattern::~QMessagePattern()
 {
-    for (int i = 0; literals[i] != 0; ++i)
+    for (int i = 0; literals[i]; ++i)
         delete [] literals[i];
     delete [] literals;
     literals = 0;
@@ -876,8 +876,12 @@ QMessagePattern::~QMessagePattern()
 
 void QMessagePattern::setPattern(const QString &pattern)
 {
+    if (literals) {
+        for (int i = 0; literals[i]; ++i)
+            delete [] literals[i];
+        delete [] literals;
+    }
     delete [] tokens;
-    delete [] literals;
 
     // scanner
     QList<QString> lexemes;