aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@redhat.com>2001-12-13 11:12:56 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2001-12-13 11:12:56 +0000
commit85230e5255cd8dc23a0d0440992ac24a119b32a5 (patch)
tree34053c1f745f059fef6c317154b720c1a1445770
parent3af44a8e3f77df55f84b12977c1236975ab32b93 (diff)
downloadgcc-85230e5255cd8dc23a0d0440992ac24a119b32a5.zip
gcc-85230e5255cd8dc23a0d0440992ac24a119b32a5.tar.gz
gcc-85230e5255cd8dc23a0d0440992ac24a119b32a5.tar.bz2
locale.cc (locale::locale(const char*)): Deal with locales named "".
2001-12-13 Benjamin Kosnik <bkoz@redhat.com> libstdc++/3679 * src/locale.cc (locale::locale(const char*)): Deal with locales named "". * testsuite/22_locale/ctor_copy_dtor.cc (test01): Modify. From-SVN: r47968
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/src/locale.cc2
-rw-r--r--libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc2
3 files changed, 10 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 25078d4..297034b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2001-12-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ libstdc++/3679
+ * src/locale.cc (locale::locale(const char*)): Deal with locales
+ named "".
+ * testsuite/22_locale/ctor_copy_dtor.cc (test01): Modify.
+
2001-12-12 Paolo Carlini <pcarlini@unitus.it>
* include/ext/ropeimpl.h (rope::_S_leaf_concat_char_iter,
diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc
index d827a25..0e899c1 100644
--- a/libstdc++-v3/src/locale.cc
+++ b/libstdc++-v3/src/locale.cc
@@ -204,6 +204,8 @@ namespace std
_S_initialize();
if (strcmp(__s, "C") == 0 || strcmp(__s, "POSIX") == 0)
(_M_impl = _S_classic)->_M_add_reference();
+ else if (strcmp(__s, "") == 0)
+ _M_impl = new _Impl(setlocale(LC_ALL, __s), 1);
else
_M_impl = new _Impl(__s, 1);
}
diff --git a/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc b/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc
index d5d7b84..bbe3b14 100644
--- a/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc
+++ b/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc
@@ -126,7 +126,7 @@ void test01()
locale loc07("");
VERIFY (loc07 != loc01);
VERIFY (loc07 != loc02);
- VERIFY (loc07.name() == "");
+ VERIFY (loc07.name() != "");
try
{ locale loc08(static_cast<const char*>(NULL)); }
catch(runtime_error& obj)