diff options
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc')
-rw-r--r-- | gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc b/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc index 3b9f1bd42..587dc11de 100644 --- a/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc +++ b/gcc-4.4.3/libstdc++-v3/config/locale/generic/c_locale.cc @@ -51,10 +51,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, NULL); - const size_t __len = strlen(__old) + 1; - char* __sav = new char[__len]; - memcpy(__sav, __old, __len); - setlocale(LC_ALL, "C"); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __len = strlen(__old) + 1; + __sav = new char[__len]; + memcpy(__sav, __old, __len); + setlocale(LC_ALL, "C"); + } char* __sanity; bool __overflow = false; @@ -116,10 +120,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, NULL); - const size_t __len = strlen(__old) + 1; - char* __sav = new char[__len]; - memcpy(__sav, __old, __len); - setlocale(LC_ALL, "C"); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __len = strlen(__old) + 1; + __sav = new char[__len]; + memcpy(__sav, __old, __len); + setlocale(LC_ALL, "C"); + } char* __sanity; #if !__DBL_HAS_INFINITY__ @@ -161,10 +169,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, NULL); - const size_t __len = strlen(__old) + 1; - char* __sav = new char[__len]; - memcpy(__sav, __old, __len); - setlocale(LC_ALL, "C"); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __len = strlen(__old) + 1; + __sav = new char[__len]; + memcpy(__sav, __old, __len); + setlocale(LC_ALL, "C"); + } #if !__LDBL_HAS_INFINITY__ errno = 0; |