From efe6e4668af95159e4808701f2ee42f7cbb8c323 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Thu, 16 Jan 2014 10:28:36 +0100
Subject: [PATCH] Debugger: Filter out duplicate entries in LLDB frames

Task-number: QTCREATORBUG-11208

Change-Id: Iec79436b6a13a40de9b7b669bece2204ac858edb
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
---
 share/qtcreator/debugger/lldbbridge.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 365b784b761..7d8e0c7de42 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -1013,12 +1013,19 @@ class Dumper(DumperBase):
         self.put('data=[')
         self.anonNumber = 0
         shadowed = {}
-        values = [v for v in frame.GetVariables(True, True, False, False) if v.IsValid()]
+        ids = {} # Filter out duplicates entries at the same address.
+        values = list(frame.GetVariables(True, True, True, False))
         values.reverse() # To get shadowed vars numbered backwards.
         for value in values:
+            if not value.IsValid():
+                continue
+            name = value.GetName()
+            id = "%s:0x%x" % (name, value.GetAddress())
+            if id in ids:
+                continue
+            ids[id] = True
             if self.dummyValue is None:
                 self.dummyValue = value
-            name = value.GetName()
             if name is None:
                 warn("NO NAME FOR VALUE: %s" % value)
                 continue
-- 
GitLab