OSDN Git Service

2003-10-22 Benjamin Kosnik <bkoz@redhat.com>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / config / locale / gnu / messages_members.h
index 48dcf32..ed95dfb 100644 (file)
@@ -39,9 +39,9 @@
      : facet(__refs)
      {  
 #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
-       _M_name_messages = _S_c_name;
+       _M_name_messages = _S_get_c_name();
 #endif
-       _M_c_locale_messages = _S_c_locale
+       _M_c_locale_messages = _S_get_c_locale()
      }
 
   template<typename _CharT>
@@ -51,8 +51,9 @@
      : facet(__refs)
      {
 #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) 
-       _M_name_messages = new char[strlen(__s) + 1];
-       strcpy(_M_name_messages, __s);
+       char* __tmp = new char[std::strlen(__s) + 1];
+       std::strcpy(__tmp, __s);
+       _M_name_messages = __tmp;
 #endif
        _M_c_locale_messages = _S_clone_c_locale(__cloc); 
      }
@@ -71,7 +72,7 @@
     messages<_CharT>::~messages()
     { 
 #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
-      if (_S_c_name != _M_name_messages)
+      if (_M_name_messages != _S_get_c_name())
        delete [] _M_name_messages;
 #endif
       _S_destroy_c_locale(_M_c_locale_messages); 
      : messages<_CharT>(__refs) 
      { 
 #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2))
-       if (this->_S_c_name != this->_M_name_messages)
+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
         delete [] this->_M_name_messages;
-       this->_M_name_messages = new char[strlen(__s) + 1];
-       strcpy(this->_M_name_messages, __s);
+       char* __tmp = new char[std::strlen(__s) + 1];
+       std::strcpy(__tmp, __s);
+       this->_M_name_messages = __tmp;
 #endif
-       _S_destroy_c_locale(this->_M_c_locale_messages);
-       _S_create_c_locale(this->_M_c_locale_messages, __s); 
+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
+         {
+           _S_destroy_c_locale(this->_M_c_locale_messages);
+           _S_create_c_locale(this->_M_c_locale_messages, __s); 
+         }
      }