forked from qt-creator/qt-creator
debugger: special handling for char*
This commit is contained in:
@@ -166,7 +166,8 @@ void WatchData::setValue(const QString &value0)
|
|||||||
// "numchild" is sometimes lying
|
// "numchild" is sometimes lying
|
||||||
//MODEL_DEBUG("\n\n\nPOINTER: " << type << value);
|
//MODEL_DEBUG("\n\n\nPOINTER: " << type << value);
|
||||||
if (isPointerType(type))
|
if (isPointerType(type))
|
||||||
setHasChildren(value != "0x0" && value != "<null>");
|
setHasChildren(value != "0x0" && value != "<null>"
|
||||||
|
&& !isCharPointerType(type));
|
||||||
|
|
||||||
// pointer type information is available in the 'type'
|
// pointer type information is available in the 'type'
|
||||||
// column. No need to duplicate it here.
|
// column. No need to duplicate it here.
|
||||||
|
@@ -268,6 +268,13 @@ bool isPointerType(const QString &type)
|
|||||||
return type.endsWith(QLatin1Char('*')) || type.endsWith(QLatin1String("* const"));
|
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)
|
bool isAccessSpecifier(const QString &str)
|
||||||
{
|
{
|
||||||
static const QStringList items = QStringList()
|
static const QStringList items = QStringList()
|
||||||
@@ -569,6 +576,8 @@ GuessChildrenResult guessChildren(const QString &type)
|
|||||||
{
|
{
|
||||||
if (isIntOrFloatType(type))
|
if (isIntOrFloatType(type))
|
||||||
return HasNoChildren;
|
return HasNoChildren;
|
||||||
|
if (isCharPointerType(type))
|
||||||
|
return HasNoChildren;
|
||||||
if (isPointerType(type))
|
if (isPointerType(type))
|
||||||
return HasChildren;
|
return HasChildren;
|
||||||
if (type.endsWith(QLatin1String("QString")))
|
if (type.endsWith(QLatin1String("QString")))
|
||||||
|
@@ -70,6 +70,7 @@ bool hasLetterOrNumber(const QString &exp);
|
|||||||
bool hasSideEffects(const QString &exp);
|
bool hasSideEffects(const QString &exp);
|
||||||
bool isKeyWord(const QString &exp);
|
bool isKeyWord(const QString &exp);
|
||||||
bool isPointerType(const QString &type);
|
bool isPointerType(const QString &type);
|
||||||
|
bool isCharPointerType(const QString &type);
|
||||||
bool isAccessSpecifier(const QString &str);
|
bool isAccessSpecifier(const QString &str);
|
||||||
bool startsWithDigit(const QString &str);
|
bool startsWithDigit(const QString &str);
|
||||||
QString stripPointerType(QString type);
|
QString stripPointerType(QString type);
|
||||||
|
Reference in New Issue
Block a user