aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/22_locale
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2009-07-18 22:58:10 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2009-07-18 22:58:10 +0000
commitaf90c8c9ae3b795f28cabd9f11e9f7c9a1ccccb4 (patch)
tree7563faaf990f548d8b0ebbb3e082086e798b7386 /libstdc++-v3/testsuite/22_locale
parent827f4079406b72fce7b49a29abe60ecb801462d5 (diff)
downloadgcc-af90c8c9ae3b795f28cabd9f11e9f7c9a1ccccb4.zip
gcc-af90c8c9ae3b795f28cabd9f11e9f7c9a1ccccb4.tar.gz
gcc-af90c8c9ae3b795f28cabd9f11e9f7c9a1ccccb4.tar.bz2
re PR libstdc++/40712 (locale(const locale&, const char*, locale::category) can create broken locale)
2009-07-18 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/40712 * config/locale/gnu/numeric_members.cc (numpunct<>:: _M_initialize_numpunct): Dynamically allocate _M_data->_M_grouping and copy the langinfo data into it. (numpunct<>::~numpunct): Free the allocated memory. * config/locale/gnu/monetary_members.cc (moneypunct<>:: _M_initialize_moneypunct): Dynamically allocate _M_data->_M_grouping, _M_data->_M_positive_sign, _M_data->_M_negative_sign, _M_data->_M_curr_symbol. (moneypunct<>::~moneypunct): Free the allocated memory. * testsuite/22_locale/moneypunct/40712.cc: New. * include/bits/locale_facets.tcc (__numpunct_cache<>::_M_cache): Do not leak memory if new throws. * include/bits/locale_facets_nonio.tcc (__moneypunct_cache<>::_M_cache): Likewise. From-SVN: r149782
Diffstat (limited to 'libstdc++-v3/testsuite/22_locale')
-rw-r--r--libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc b/libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
new file mode 100644
index 0000000..49eb21c
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
@@ -0,0 +1,41 @@
+// { dg-require-namedlocale "" }
+
+// 2009-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2009 Free Software Foundation
+//
+// 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// 22.2.6.3 Template class moneypunct
+
+#include <locale>
+
+// libstdc++/40712
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ locale loc(locale("C"), "en_US", locale::monetary);
+
+ use_facet<moneypunct<char> >(loc).grouping();
+}
+
+int main()
+{
+ test01();
+ return 0;
+}