diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index 73e519b3b67d3217c1fbd40973e25d6a4a4a9a81..56a5d7f2d63363679d41a08fb8685862a4103acf 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -2722,6 +2722,14 @@ static void qDumpQSharedPointer(QDumper &d) const QSharedPointer<int> &ptr = *reinterpret_cast<const QSharedPointer<int> *>(d.data); + if (ptr.isNull()) { + d.putItem("value", "<null>"); + d.putItem("valuedisabled", "true"); + d.putItem("numchild", 0); + d.disarm(); + return; + } + if (isSimpleType(d.innertype)) qDumpInnerValueHelper(d, d.innertype, ptr.data()); else @@ -2878,6 +2886,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", "<null>"); + d.putItem("valuedisabled", "true"); + d.putItem("numchild", 0); + d.disarm(); + return; + } if (isSimpleType(d.innertype)) qDumpInnerValueHelper(d, d.innertype, value);