From f942e78de9710a8541e9e3b707e9e485004cf025 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 25 Jan 2004 23:31:43 +0000 Subject: monetary_members.cc: Restore locale before rethrowing exception. * config/locale/gnu/monetary_members.cc: Restore locale before rethrowing exception. From-SVN: r76595 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/config/locale/gnu/monetary_members.cc | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5a3ca42..31453b0 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2004-01-26 Andreas Schwab + + * config/locale/gnu/monetary_members.cc: Restore locale before + rethrowing exception. + 2004-01-25 Paolo Carlini * include/bits/basic_string.h (_M_replace_aux, _M_replace_safe): diff --git a/libstdc++-v3/config/locale/gnu/monetary_members.cc b/libstdc++-v3/config/locale/gnu/monetary_members.cc index 580297b..a2aa0c5 100644 --- a/libstdc++-v3/config/locale/gnu/monetary_members.cc +++ b/libstdc++-v3/config/locale/gnu/monetary_members.cc @@ -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; } -- cgit v1.1