It seems that commit 10539 together with 10540 break 32-bit build on linux.
See this error log-snippet:
debuggermanager.cpp: In function 'uint64_t cbDebuggerStringToAddress(const wxString&)':
debuggermanager.cpp:488:36: error: no matching function for call to 'wxString::ToULong(uint64_t*, int) const'
if (address.ToULong(&result, 16))
^
In file included from /usr/include/wx-2.8/wx/artprov.h:15:0,
from debuggermanager.cpp:12:
/usr/include/wx-2.8/wx/string.h:1188:10: note: candidate: bool wxString::ToULong(long unsigned int*, int) const
bool ToULong(unsigned long *val, int base = 10) const;
^
/usr/include/wx-2.8/wx/string.h:1188:10: note: no known conversion for argument 1 from 'uint64_t* {aka long long unsigned int*}' to 'long unsigned int*'
The cause is the use of this newly added function:
@@ -459,6 +472,30 @@ wxString cbDetectDebuggerExecutable(const wxString &exeName)
return exePath + wxFileName::GetPathSeparator() + exeName + exeExt;
}
+uint64_t cbDebuggerStringToAddress(const wxString &address)
+{
+ if (address.empty())
+ return 0;
+#if defined(__WXMSW__)
+ // Workaround for the 'ToULongLong' bug in wxWidgets 2.8.12
+#if wxCHECK_VERSION(2, 8, 12)
+ return strtoull(address.mb_str(), nullptr, 16);
+#else
+ uint64_t result;
+ if (address.ToULongLong(&result))
+ return result;
+ else
+ return 0;
+#endif // wxCHECK_VERSION
+#else
+ uint64_t result;
+ if (address.ToULong(&result, 16))
+ return result;
+ else
+ return 0;
+#endif
+}
+
class DebugTextCtrlLogger : public TextCtrlLogger
{
(1) Is there any reason for the
#if defined(__WXMSW__) ?
(2) And if yes, shouldn't it be
address.ToUlongLong in the else-clause ?
Or in other words, is the ToUlongLong-bug (which ?) a windows-only (2) bug or is it a bug on all systems (1) ?