diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 9024e1c87b5e55ce2ed26a1c075c2994517e793c..6ff1cb08c87f58a29557b095849dd8886c976a76 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -3938,7 +3938,7 @@ void GdbEngine::handleVarListChildrenHelper(const GdbMi &item,
         if (data.type == data.name) {
             if (isPointerType(parent.type)) {
                 data.exp = "*(" + parent.exp + ')';
-                data.name = _("*") + parent.name;
+                data.name = _("*"); // + parent.name;
             } else {
                 // A type we derive from? gdb crashes when creating variables here
                 data.exp = parent.exp;
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 37d9dc7794cc8ef1aaefe4d058afb6b2df36a91e..ae12376acb18fcd04d24a08ec4435d999d321388 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -89,7 +89,7 @@ public:
         { parent = 0; }
 
     void setData(const WatchData &data)
-        { static_cast<WatchData &>(*this) = data; }
+        { static_cast<WatchData &>(*this) = data; parent = 0; }
 
     WatchItem *parent;
     QList<WatchItem *> children;  // fetched children
@@ -775,12 +775,15 @@ void WatchModel::emitDataChanged(int column, const QModelIndex &parentIndex)
 
 QVariant WatchModel::data(const QModelIndex &idx, int role) const
 {
-    const WatchItem &data = *watchItem(idx);
+    const WatchItem *item = watchItem(idx);
+    const WatchItem &data = *item;
 
     switch (role) {
         case Qt::DisplayRole: {
             switch (idx.column()) {
                 case 0:
+                    if (data.name == QLatin1String("*") && item->parent)
+                        return QLatin1String("*") + item->parent->name;
                     return data.name;
                 case 1: {
                     int format = m_handler->m_individualFormats.value(data.iname, -1);