From fc3dbb5c78d0f7c6eafc4cc0a0e253404e1794f5 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Tue, 30 Jul 2013 10:05:21 +0200
Subject: [PATCH] Fix double deletion in jump list, introduce clear method.

Change-Id: I81f672a3fac3a0ab55e52a4e598c4ee5d5db64b7
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
---
 src/winextras/qjumplist.cpp | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/winextras/qjumplist.cpp b/src/winextras/qjumplist.cpp
index f211cca..aa82c21 100644
--- a/src/winextras/qjumplist.cpp
+++ b/src/winextras/qjumplist.cpp
@@ -294,6 +294,13 @@ public:
         }
     }
 
+    inline void clearItems()
+    {
+        isListBegan = false;
+        qDeleteAll(jumpListItems);
+        jumpListItems.clear();
+    }
+
     static QList<QJumpListItem *> fromComCollection(IObjectArray *array)
     {
         QList<QJumpListItem *> list;
@@ -631,9 +638,7 @@ bool QJumpList::commit()
         d->appendCategory();
     }
 
-    d->isListBegan = false;
-    qDeleteAll(d->jumpListItems);
-    d->jumpListItems.clear();
+    d->clearItems();
     HRESULT hresult = d->pDestList->CommitList();
     if (FAILED(hresult))
         QJumpListPrivate::warning("CommitList", hresult);
@@ -650,10 +655,7 @@ bool QJumpList::abort()
     if (!d->pDestList)
         return false;
 
-    d->isListBegan = false;
-    qDeleteAll(d->jumpListItems);
-    qDeleteAll(d->jumpListItems);
-    d->jumpListItems.clear();
+    d->clearItems();
     HRESULT hresult = d->pDestList->AbortList();
     if (FAILED(hresult))
         QJumpListPrivate::warning("AbortList", hresult);
-- 
GitLab