diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index b1c1a818e61448479c69e54208f89d5a31149072..c8b257947228f4a25bbd74335f0cd41273a52ed9 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -166,7 +166,8 @@ void WatchData::setValue(const QString &value0) // "numchild" is sometimes lying //MODEL_DEBUG("\n\n\nPOINTER: " << type << value); if (isPointerType(type)) - setHasChildren(value != "0x0" && value != "<null>"); + setHasChildren(value != "0x0" && value != "<null>" + && !isCharPointerType(type)); // pointer type information is available in the 'type' // column. No need to duplicate it here. diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index 5b45d90aff6dc9d9aead6cdc3b6459ccc4067a1f..c5c9aac50069e4fb5c6beb2efd2db11aeaafe347 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -268,6 +268,13 @@ bool isPointerType(const QString &type) return type.endsWith(QLatin1Char('*')) || type.endsWith(QLatin1String("* const")); } +bool isCharPointerType(const QString &type) +{ + return type == QLatin1String("char *") + || type == QLatin1String("const char *") + || type == QLatin1String("char const *"); +} + bool isAccessSpecifier(const QString &str) { static const QStringList items = QStringList() @@ -569,6 +576,8 @@ GuessChildrenResult guessChildren(const QString &type) { if (isIntOrFloatType(type)) return HasNoChildren; + if (isCharPointerType(type)) + return HasNoChildren; if (isPointerType(type)) return HasChildren; if (type.endsWith(QLatin1String("QString"))) diff --git a/src/plugins/debugger/watchutils.h b/src/plugins/debugger/watchutils.h index c7cf4bfdbed8ef7465fbc9c85abbcd3de9bc15fe..477eed2d33ab6c454e01213039e7ba2ed1448dbb 100644 --- a/src/plugins/debugger/watchutils.h +++ b/src/plugins/debugger/watchutils.h @@ -70,6 +70,7 @@ bool hasLetterOrNumber(const QString &exp); bool hasSideEffects(const QString &exp); bool isKeyWord(const QString &exp); bool isPointerType(const QString &type); +bool isCharPointerType(const QString &type); bool isAccessSpecifier(const QString &str); bool startsWithDigit(const QString &str); QString stripPointerType(QString type);