Debugger: Fix editing of std::{w,}string, QString, QByteArray

... as well as std::vector and QVector

Change-Id: I7fd33be9917a17414149813c28316166b8de9be7
Task-number: QTCREATORBUG-18681
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2017-08-08 13:49:59 +02:00
parent 2c6be25dcd
commit 6ae77f7daa
3 changed files with 26 additions and 17 deletions
+3 -3
View File
@@ -733,7 +733,7 @@ class Dumper(DumperBase):
typeName = "'" + typeName + "'"
# 'class' is needed, see http://sourceware.org/bugzilla/show_bug.cgi?id=11912
#exp = '((class %s*)%s)->%s(%s)' % (typeName, value.laddress, function, arg)
addr = value.laddress
addr = value.address()
if addr is None:
addr = self.pokeValue(value)
#warn('PTR: %s -> %s(%s)' % (value, function, addr))
@@ -742,7 +742,7 @@ class Dumper(DumperBase):
result = gdb.parse_and_eval(exp)
#warn(' -> %s' % result)
res = self.fromNativeValue(result)
if value.laddress is None:
if value.address() is None:
self.releaseValue(addr)
return res
@@ -1048,7 +1048,7 @@ class Dumper(DumperBase):
typeName = typeName[0:pos]
if typeName in self.qqEditable and not simpleType:
#self.qqEditable[typeName](self, expr, value)
expr = gdb.parse_and_eval(expr)
expr = self.parseAndEvaluate(expr)
self.qqEditable[typeName](self, expr, value)
else:
cmd = 'set variable (%s)=%s' % (expr, value)