From f3ae302b4d8f7caac3cf1756fcf72c689272e05c Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Tue, 31 Jul 2018 00:17:54 +0200 Subject: [PATCH] Prevent segfault in vararg test with MinGW The segmentation fault is caused by swscanf with __USE_MINGW_ANSI_STDIO=1. See https://sourceforge.net/p/mingw-w64/mailman/message/36118530/ --- tests/strings/vararg.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/strings/vararg.cpp b/tests/strings/vararg.cpp index a03c7b48c7..b84b01ba3e 100644 --- a/tests/strings/vararg.cpp +++ b/tests/strings/vararg.cpp @@ -200,7 +200,6 @@ void VarArgTestCase::Sscanf() { int i = 0; char str[20]; - wchar_t wstr[20]; wxString input("42 test"); @@ -208,10 +207,18 @@ void VarArgTestCase::Sscanf() CPPUNIT_ASSERT( i == 42 ); CPPUNIT_ASSERT( wxString(str) == "test" ); +#if !(defined(__MINGW32__) && \ + defined(__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO == 1) + // disable this test on mingw with __USE_MINGW_ANSI_STDIO=1 + // to prevent a segmentation fault. See: + // https://sourceforge.net/p/mingw-w64/mailman/message/36118530/ + wchar_t wstr[20]; + i = 0; wxSscanf(input, L"%d %s", &i, &wstr); CPPUNIT_ASSERT( i == 42 ); CPPUNIT_ASSERT( wxString(wstr) == "test" ); +#endif } void VarArgTestCase::RepeatedPrintf()