diff options
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc')
-rw-r--r-- | gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc b/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc index 86c924959..46622944c 100644 --- a/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc +++ b/gcc-4.4.3/libstdc++-v3/config/locale/generic/time_members.cc @@ -43,10 +43,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const tm* __tm) const { char* __old = setlocale(LC_ALL, NULL); - const size_t __llen = strlen(__old) + 1; - char* __sav = new char[__llen]; - memcpy(__sav, __old, __llen); - setlocale(LC_ALL, _M_name_timepunct); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __llen = strlen(__old) + 1; + __sav = new char[__llen]; + memcpy(__sav, __old, __llen); + setlocale(LC_ALL, _M_name_timepunct); + } const size_t __len = strftime(__s, __maxlen, __format, __tm); setlocale(LC_ALL, __sav); delete [] __sav; @@ -128,10 +132,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const tm* __tm) const { char* __old = setlocale(LC_ALL, NULL); - const size_t __llen = strlen(__old) + 1; - char* __sav = new char[__llen]; - memcpy(__sav, __old, __llen); - setlocale(LC_ALL, _M_name_timepunct); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __llen = strlen(__old) + 1; + __sav = new char[__llen]; + memcpy(__sav, __old, __llen); + setlocale(LC_ALL, _M_name_timepunct); + } const size_t __len = wcsftime(__s, __maxlen, __format, __tm); setlocale(LC_ALL, __sav); delete [] __sav; |