summarylogtreecommitdiffstats
path: root/wxgtk-abicheck.patch
diff options
context:
space:
mode:
Diffstat (limited to 'wxgtk-abicheck.patch')
-rw-r--r--wxgtk-abicheck.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/wxgtk-abicheck.patch b/wxgtk-abicheck.patch
new file mode 100644
index 000000000000..eea4f7f6e53c
--- /dev/null
+++ b/wxgtk-abicheck.patch
@@ -0,0 +1,47 @@
+Description: Suppress error about mismatching C++ ABI version
+ In practice, the differences between recent ABI versions don't seem to be
+ incompatible since they apparently only affect obscure corner cases. So
+ suppress this error so we don't have to rebuild the entire wx world in one
+ go.
+Original Author: Olly Betts <olly@survex.com>
+Forwarded: no
+Last-Update: 2017-07-26
+
+MOD for 3.1.6 by sL1pKn07 (2022-04-11)
+
+diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp
+index b450b33582..eecef3ac36 100644
+--- a/src/common/appbase.cpp
++++ b/src/common/appbase.cpp
+@@ -842,9 +842,30 @@ bool wxAppConsoleBase::CheckBuildOptions(const char *optionsSignature,
+ wxString lib = wxString::FromAscii(WX_BUILD_OPTIONS_SIGNATURE);
+ wxString prog = wxString::FromAscii(optionsSignature);
+ wxString progName = wxString::FromAscii(componentName);
++ wxString msg;
+
+- wxLogFatalError(wxT("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
++ msg.Printf(wxT("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
+ lib, progName, prog);
++ int l_off = lib.Find("compiler with C++ ABI ");
++ int p_off = prog.Find("compiler with C++ ABI ");
++ if (l_off != wxNOT_FOUND && p_off != wxNOT_FOUND) {
++ int space;
++ space = lib.find(',', l_off + 22);
++ lib.erase(l_off, space - l_off);
++ space = prog.find(',', p_off + 22);
++ prog.erase(p_off, space - p_off);
++ if (lib == prog) {
++ // The only difference is the ABI version, which apparently only
++ // affect obscure cases. We used to warn here, so at least
++ // there was an indication of what's up if there is a problem
++ // due to ABI incompatibilities, but wxLogWarning() can result
++ // in a pop up dialog with some applications, which is just too
++ // intrusive, so just quietly ignore instead.
++ //wxLogWarning(msg);
++ return false;
++ }
++ }
++ wxLogFatalError(msg);
+
+ // normally wxLogFatalError doesn't return
+ return false;