summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/22_locale
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-14 00:12:40 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-14 00:12:40 +0000
commit565587b9b4907ec32fe64b42bf33d071ee6bf6b4 (patch)
tree54494d6e41b441194140f185e388540c8b867fe2 /libstdc++-v3/testsuite/22_locale
parentbe59b76a423ebd84104b9be345fb1c98dfd6068d (diff)
downloadgcc-565587b9b4907ec32fe64b42bf33d071ee6bf6b4.tar.gz
2011-10-13 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/50714 * include/bits/codecvt.h (codecvt<>::codecvt(size_t)): Initialize _M_c_locale_codecvt member. * testsuite/22_locale/codecvt_byname/50714.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179948 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite/22_locale')
-rw-r--r--libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc94
1 files changed, 94 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc b/libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
new file mode 100644
index 00000000000..6c84be2bd59
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
@@ -0,0 +1,94 @@
+// { dg-require-namedlocale "de_DE" }
+
+// Copyright (C) 2011 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/>.
+
+#include <locale>
+
+#define mychar unsigned short
+
+namespace std
+{
+ template<> codecvt<mychar, char, mbstate_t>::~codecvt()
+ { }
+
+ template<>
+ codecvt<mychar, char, mbstate_t>::result
+ codecvt<mychar, char, mbstate_t>::
+ do_out(state_type&, const intern_type*, const intern_type*,
+ const intern_type*&, extern_type*, extern_type*,
+ extern_type*&) const
+ { return codecvt_base::ok; }
+
+ template<>
+ codecvt<mychar, char, mbstate_t>::result
+ codecvt<mychar, char, mbstate_t>::
+ do_in(state_type&, const extern_type*, const extern_type*,
+ const extern_type*&, intern_type*, intern_type*,
+ intern_type*&) const
+ { return codecvt_base::ok; }
+
+ template<>
+ codecvt<mychar, char, mbstate_t>::result
+ codecvt<mychar, char, mbstate_t>::
+ do_unshift(state_type&, extern_type*, extern_type*,
+ extern_type*&) const
+ { return noconv; }
+
+ template<>
+ int
+ codecvt<mychar, char, mbstate_t>::do_encoding() const
+ { return 0; }
+
+ template<>
+ bool
+ codecvt<mychar, char, mbstate_t>::do_always_noconv() const
+ { return false; }
+
+ template<>
+ int
+ codecvt<mychar, char, mbstate_t>::
+ do_length(state_type&, const extern_type*, const extern_type*,
+ size_t) const
+ { return 0; }
+
+ template<>
+ int
+ codecvt<mychar, char, mbstate_t>::do_max_length() const
+ { return 4; }
+}
+
+// libstdc++/50714
+void test01()
+{
+ using namespace std;
+
+ {
+ locale loc(locale::classic(),
+ new codecvt<mychar, char, mbstate_t>());
+ }
+ {
+ locale loc2(locale::classic(),
+ new codecvt_byname<mychar, char, mbstate_t>("de_DE"));
+ }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}