aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-04-01 15:45:38 +0200
committerhjk <hjk121@nokiamail.com>2014-04-01 16:48:55 +0200
commitc5dd58fce51ba7661553ed1d9d9367d497d6fb7d (patch)
tree58db4bcde8725e4a5f2a7c8e06e4d0953aee96f1 /share
parentba2ee4a5395a8b3510cb271e3c0bc11bfe516a8d (diff)
Debugger: Use tested offsets in QDateTime dumper
Task-number: QTCREATORBUG-11164 Change-Id: I9184e2f14baa3d3d649839f25088dbd0a01a3496 Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/qttypes.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index b11feebfe0..7470d95d35 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -27,6 +27,7 @@
#
#############################################################################
+import platform
from dumper import *
@@ -246,20 +247,27 @@ def qdump__QDateTime(d, value):
# This relies on the Qt4/Qt5 internal structure layout:
# {sharedref(4), ...
base = d.extractPointer(value)
+ is32bit = d.is32bit()
if qtVersion >= 0x050200:
- dateBase = base + d.ptrSize() # Only QAtomicInt, but will be padded.
- # qint64 m_msecs
- # Qt::TimeSpec m_spec
- # int m_offsetFromUtc
- # QTimeZone m_timeZone // only #ifndef QT_BOOTSTRAPPED
- # StatusFlags m_status
- status = d.extractInt(dateBase + 16 + d.ptrSize())
+ if platform.system() in ("Microsoft", "Windows"):
+ msecsOffset = 8
+ specOffset = 16
+ offsetFromUtcOffset = 20
+ timeZoneOffset = 24
+ statusOffset = 28 if is32bit else 32
+ else:
+ msecsOffset = 4 if is32bit else 8
+ specOffset = 12 if is32bit else 16
+ offsetFromUtcOffset = 16 if is32bit else 20
+ timeZoneOffset = 20 if is32bit else 24
+ statusOffset = 24 if is32bit else 32
+ status = d.extractInt(base + statusOffset)
if int(status & 0x0c == 0x0c): # ValidDate and ValidTime
isValid = True
- msecs = d.extractInt64(dateBase)
- spec = d.extractInt(dateBase + 8)
- offset = d.extractInt(dateBase + 12)
- tzp = d.extractPointer(dateBase + 16)
+ msecs = d.extractInt64(base + msecsOffset)
+ spec = d.extractInt(base + specOffset)
+ offset = d.extractInt(base + offsetFromUtcOffset)
+ tzp = d.extractPointer(base + timeZoneOffset)
if tzp == 0:
tz = ""
else: