From 91c9e66731578e7c84a39c4c050feccd24d47db1 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 26 Aug 2009 16:49:05 +0200 Subject: [PATCH] debugger: fix dumpers for QSharedPointer and QWeakPointer for the isNull() case (cherry picked from commit e195159f167e2058412f320108652a62c5301bd8) --- share/qtcreator/gdbmacros/gdbmacros.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index 5d2bc781ea7..087e4c7e86a 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -2612,6 +2612,14 @@ static void qDumpQSharedPointer(QDumper &d) const QSharedPointer &ptr = *reinterpret_cast *>(d.data); + if (ptr.isNull()) { + d.putItem("value", ""); + d.putItem("valuedisabled", "true"); + d.putItem("numchild", 0); + d.disarm(); + return; + } + if (isSimpleType(d.innertype)) qDumpInnerValueHelper(d, d.innertype, ptr.data()); else @@ -2768,6 +2776,15 @@ static void qDumpQWeakPointer(QDumper &d) { const int v = sizeof(void *); const void *value = deref(addOffset(d.data, v)); + const void *data = deref(d.data); + + if (value == 0 || data == 0) { + d.putItem("value", ""); + d.putItem("valuedisabled", "true"); + d.putItem("numchild", 0); + d.disarm(); + return; + } if (isSimpleType(d.innertype)) qDumpInnerValueHelper(d, d.innertype, value);