mirror of
https://github.com/reactos/CMake.git
synced 2024-12-14 07:09:22 +00:00
36bc7e4c3f
On Windows XP 32 bit setLocale seems to cause old pointer invalidation and causes program crash in destructor. This was causing CPackZIP to crash so to fix it we copy the value into a temporary variable.
25 lines
489 B
C++
25 lines
489 B
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#ifndef cmLocale_h
|
|
#define cmLocale_h
|
|
|
|
#include <cmConfigure.h>
|
|
|
|
#include <locale.h>
|
|
#include <string>
|
|
|
|
class cmLocaleRAII
|
|
{
|
|
std::string OldLocale;
|
|
|
|
public:
|
|
cmLocaleRAII()
|
|
: OldLocale(setlocale(LC_CTYPE, CM_NULLPTR))
|
|
{
|
|
setlocale(LC_CTYPE, "");
|
|
}
|
|
~cmLocaleRAII() { setlocale(LC_CTYPE, this->OldLocale.c_str()); }
|
|
};
|
|
|
|
#endif
|