OSDN Git Service

* config/locale/gnu/monetary_members.cc: Restore locale before
authorschwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Jan 2004 23:31:43 +0000 (23:31 +0000)
committerschwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Jan 2004 23:31:43 +0000 (23:31 +0000)
rethrowing exception.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76595 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/gnu/monetary_members.cc

index 5a3ca42..31453b0 100644 (file)
@@ -1,3 +1,8 @@
+2004-01-26  Andreas Schwab  <schwab@suse.de>
+
+       * config/locale/gnu/monetary_members.cc: Restore locale before
+       rethrowing exception.
+
 2004-01-25  Paolo Carlini  <pcarlini@suse.de>
 
        * include/bits/basic_string.h (_M_replace_aux, _M_replace_safe):
index 580297b..a2aa0c5 100644 (file)
@@ -1,6 +1,6 @@
 // std::moneypunct implementation details, GNU version -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -419,6 +419,12 @@ namespace std
              _M_data = 0;
              delete __wcs_ps;
              delete __wcs_ns;        
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+             __uselocale(__old);
+#else
+             setlocale(LC_ALL, __old);
+             free(__old);
+#endif
              __throw_exception_again;
            } 
          
@@ -543,6 +549,12 @@ namespace std
               _M_data = 0;
              delete __wcs_ps;
              delete __wcs_ns;        
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+             __uselocale(__old);
+#else
+             setlocale(LC_ALL, __old);
+             free(__old);
+#endif
               __throw_exception_again;
            }