From a6ee961bc3339bc3fd9f136536d0e7d9a303f5ad Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 10 Apr 2013 05:58:53 -0700 Subject: [PATCH] cdbext: Fix dump of 64bit integer in container. Change-Id: If782d6da5453e78b3038c6ef8edbce0718b487c7 Reviewed-by: Friedemann Kleint --- src/libs/qtcreatorcdbext/containers.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libs/qtcreatorcdbext/containers.cpp b/src/libs/qtcreatorcdbext/containers.cpp index 9fdefd5df25..37de100fcb6 100644 --- a/src/libs/qtcreatorcdbext/containers.cpp +++ b/src/libs/qtcreatorcdbext/containers.cpp @@ -77,8 +77,15 @@ static inline void dump64bitPointerArray(std::ostream &os, const void *a, int co static inline std::string fixInnerType(std::string type, const SymbolGroupValue &container) { - const std::string stripped + std::string stripped = SymbolGroupValue::stripConst(SymbolGroupValue::stripClassPrefixes(type)); + + // Unfortunately the cdb can not handle the vc exclusiv 64 bit integer + // "__int64" but works fine with "int64", so we have to strip down "__" + const size_t __int64pos = stripped.find("__int64"); + if (__int64pos != std::string::npos) + stripped.erase(__int64pos, 2); + const KnownType kt = knownType(stripped, 0); // Resolve types unless they are POD or pointers to POD (that is, qualify 'Foo' and 'Foo*') const bool needResolve = kt == KT_Unknown || kt == KT_PointerType || !(kt & KT_POD_Type);