From 2416cd031bb3f63f6d2169fa431b0df16a3535fd Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Jul 2013 01:31:47 +0000 Subject: [PATCH] Fix totally broken LocaleSetter class in the test suite. It was based on a completely erroneous assumption that setlocale() returns the locale that had been previously active when it actually returns the newly set locale. This fixes unit test failures in StringTestCase under OS X, as the locale wasn't correctly restored by DateTimeTestCase that used this class. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- tests/testprec.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/testprec.h b/tests/testprec.h index 0005f5bb3e..3e8ed28a63 100644 --- a/tests/testprec.h +++ b/tests/testprec.h @@ -132,11 +132,20 @@ extern bool IsAutomaticTest(); class LocaleSetter { public: - LocaleSetter(const char *loc) : m_locOld(setlocale(LC_ALL, loc)) { } - ~LocaleSetter() { setlocale(LC_ALL, m_locOld); } + LocaleSetter(const char *loc) + : m_locOld(wxStrdupA(setlocale(LC_ALL, NULL))) + { + setlocale(LC_ALL, loc); + } + + ~LocaleSetter() + { + setlocale(LC_ALL, m_locOld); + free(m_locOld); + } private: - const char * const m_locOld; + char * const m_locOld; wxDECLARE_NO_COPY_CLASS(LocaleSetter); }; -- 2.50.0