forked from qt-creator/qt-creator
Dumper: robustify msvc std vector/string dumpers
By looking for debug members instead of relying on a failing size check. Task-number: QTCREATORBUG-24901 Change-Id: Ia79ba893243e864c7808e89ee7e29ba4b853f754 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -744,9 +744,9 @@ def qdumpHelper__std__string__QNX(d, value, charType, format):
|
||||
|
||||
def qdumpHelper__std__string__MSVC(d, value, charType, format):
|
||||
try:
|
||||
_ = value["_Mypair"]["_Myval2"]["_Myproxy"]
|
||||
(proxy, buffer, size, alloc) = value.split("p16spp")
|
||||
d.check(0 <= size and size <= alloc and alloc <= 100 * 1000 * 1000)
|
||||
except RuntimeError:
|
||||
except Exception:
|
||||
proxy = None
|
||||
(buffer, size, alloc) = value.split("16spp")
|
||||
d.check(0 <= size and size <= alloc and alloc <= 100 * 1000 * 1000)
|
||||
@@ -1128,21 +1128,21 @@ def qdumpHelper__std__vector__libcxx(d, value):
|
||||
def qdumpHelper__std__vector__msvc(d, value):
|
||||
inner_type = value.type[0]
|
||||
if inner_type.name == "bool":
|
||||
proxy1, proxy2, start, finish, alloc, size = value.split("pppppi")
|
||||
try:
|
||||
d.check(0 <= size and size <= 1000 * 1000 * 1000)
|
||||
d.check(finish <= alloc)
|
||||
_ = value["_Myproxy"]
|
||||
proxy1, proxy2, start, finish, alloc, size = value.split("pppppi")
|
||||
except RuntimeError:
|
||||
start, finish, alloc, size = value.split("pppi")
|
||||
d.check(0 <= size and size <= 1000 * 1000 * 1000)
|
||||
qdumpHelper__std__vector__bool(d, start, size, inner_type)
|
||||
else:
|
||||
proxy, start, finish, alloc = value.split("pppp")
|
||||
size = (finish - start) // inner_type.size()
|
||||
try:
|
||||
d.check(0 <= size and size <= 1000 * 1000 * 1000)
|
||||
d.check(finish <= alloc)
|
||||
_ = value["_Mypair"]["_Myval2"]["_Myproxy"]
|
||||
proxy, start, finish, alloc = value.split("pppp")
|
||||
except RuntimeError:
|
||||
start, finish, alloc = value.split("ppp")
|
||||
size = (finish - start) // inner_type.size()
|
||||
d.check(0 <= size and size <= 1000 * 1000 * 1000)
|
||||
qdumpHelper__std__vector__nonbool(d, start, finish, alloc, inner_type)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user