]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
locale_facets.tcc (money_get::do_get(string_type&)): Fix parsing of the remaining...
authorPaolo Carlini <pcarlini@suse.de>
Mon, 16 Feb 2004 16:46:26 +0000 (16:46 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 16 Feb 2004 16:46:26 +0000 (16:46 +0000)
2004-02-16  Paolo Carlini  <pcarlini@suse.de>

* include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
Fix parsing of the remaining sign characters.
* 22_locale/money_get/get/char/2.cc: Tweak: now, correctly,
the input is scanned 'til eof.
* 22_locale/money_get/get/char/4.cc: Likewise.
* 22_locale/money_get/get/wchar_t/2.cc: Likewise.
* 22_locale/money_get/get/wchar_t/4.cc: Likewise.
* 22_locale/money_get/get/char/8.cc: Tweak: override do_neg_format,
not do_pos_format: the former is the only one that matters during
input.
* 22_locale/money_get/get/wchar_t/8.cc: Likewise.

* 22_locale/money_get/get/char/6.cc: Minor tweak.
* 22_locale/money_get/get/wchar_t/6.cc: Likewise.

From-SVN: r77896

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/locale_facets.tcc
libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc

index 2765ee1c740aea8e2536ebc86bf7d695a22b66b6..301779611e475c270f28294980897e9f34435e42 100644 (file)
@@ -1,3 +1,20 @@
+2004-02-16  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/bits/locale_facets.tcc (money_get::do_get(string_type&)):
+       Fix parsing of the remaining sign characters.
+       * 22_locale/money_get/get/char/2.cc: Tweak: now, correctly,
+       the input is scanned 'til eof.
+       * 22_locale/money_get/get/char/4.cc: Likewise.
+       * 22_locale/money_get/get/wchar_t/2.cc: Likewise.
+       * 22_locale/money_get/get/wchar_t/4.cc: Likewise.
+       * 22_locale/money_get/get/char/8.cc: Tweak: override do_neg_format,
+       not do_pos_format: the former is the only one that matters during
+       input.
+       * 22_locale/money_get/get/wchar_t/8.cc: Likewise.
+
+       * 22_locale/money_get/get/char/6.cc: Minor tweak.
+       * 22_locale/money_get/get/wchar_t/6.cc: Likewise.
+
 2004-02-15  David Asher  <david.asher@cavium.com>
 
        PR libstdc++/11352
index afbd96c70ae2d3c1fe6de3892250adb73a886411..5e6128e0934b958ed5ba2ec6eb89cf8a9da07e96 100644 (file)
@@ -1207,7 +1207,7 @@ namespace std
                  || ((static_cast<part>(__p.field[3]) != money_base::none)
                      && __i == 2))
                {
-                 // According to 22.2.6.1.2.2, symbol is required
+                 // According to 22.2.6.1.2, p2, symbol is required
                  // if (__io.flags() & ios_base::showbase),
                  // otherwise is optional and consumed only if
                  // other characters are needed to complete the
@@ -1293,9 +1293,8 @@ namespace std
        {
          const size_type __len = __sign.size();
          size_type __i = 1;
-         for (; __beg != __end && __i < __len; ++__i)
-           for (; __beg != __end
-                  && *__beg != __sign[__i]; ++__beg);
+         for (; __beg != __end && __i < __len
+                && *__beg == __sign[__i]; ++__beg, ++__i);
 
          if (__i != __len)
            __testvalid = false;
index 0d516a28402d6c3762072ca8dce4c1c183092df7..b9bd0052cb63fc15ad34abb5a5c5b8f830ebd55b 100644 (file)
@@ -81,7 +81,7 @@ void test02()
   ios_base::iostate err10 = ios_base::goodbit;
   mon_get.get(is_it10, end, true, iss, err10, result10);
   VERIFY( result10 == digits2 );
-  VERIFY( err10 == ios_base::goodbit );
+  VERIFY( err10 == ios_base::eofbit );
 
   iss.str("(HKD .01)"); 
   iterator_type is_it11(iss);
@@ -89,7 +89,7 @@ void test02()
   ios_base::iostate err11 = ios_base::goodbit;
   mon_get.get(is_it11, end, true, iss, err11, result11);
   VERIFY( result11 == digits4 );
-  VERIFY( err11 == ios_base::goodbit );
+  VERIFY( err11 == ios_base::eofbit );
 
   // for the "en_HK" locale the parsing of the very same input streams must
   // be successful without showbase too, since the symbol field appears in
@@ -111,7 +111,7 @@ void test02()
   ios_base::iostate err13 = ios_base::goodbit;
   mon_get.get(is_it13, end, true, iss, err13, result13);
   VERIFY( result13 == digits2 );
-  VERIFY( err13 == ios_base::goodbit );
+  VERIFY( err13 == ios_base::eofbit );
 
   iss.str("(HKD .01)"); 
   iterator_type is_it14(iss);
@@ -119,7 +119,7 @@ void test02()
   ios_base::iostate err14 = ios_base::goodbit;
   mon_get.get(is_it14, end, true, iss, err14, result14);
   VERIFY( result14 == digits4 );
-  VERIFY( err14 == ios_base::goodbit );
+  VERIFY( err14 == ios_base::eofbit );
 }
 
 int main()
index 7c009c85d3bcd4cf463efe2877eadcb6f9b8613e..c5aa7a3a8c498f5d9c5b778a266bbf43303196d8 100644 (file)
@@ -28,8 +28,6 @@
 void test04()
 {
   using namespace std;
-  typedef money_base::part part;
-  typedef money_base::pattern pattern;
   typedef istreambuf_iterator<char> iterator_type;
 
   bool test __attribute__((unused)) = true;
@@ -64,7 +62,7 @@ void test04()
   ios_base::iostate err03 = ios_base::goodbit;
   mon_get.get(is_it03, end, true, iss, err03, result3);
   VERIFY( result3 == digits4 );
-  VERIFY( err03 == ios_base::goodbit );
+  VERIFY( err03 == ios_base::eofbit );
 }
 
 int main()
index 8c03e8245ffcc18cedac164272f40512215f431b..434edfe12b7c1a51b3b827dcc8fdce2e23414837 100644 (file)
@@ -1,6 +1,6 @@
 // 2001-09-12 Benjamin Kosnik  <bkoz@redhat.com>
 
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 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
@@ -35,12 +35,6 @@ struct My_money_io : public std::moneypunct<char,false>
   
   int do_frac_digits() const { return 2; }
 
-  pattern do_pos_format() const
-  {
-    pattern pat = { { symbol, none, sign, value } };
-    return pat;
-  }
-
   pattern do_neg_format() const
   {
     pattern pat = { { symbol, none, sign, value } };
index 01a93381557d9ef795cb16ff631f67d80f8bc328..f88b521c0020a1622576cb8143bb4866602b78c0 100644 (file)
@@ -34,7 +34,7 @@ struct My_money_io_a : public std::moneypunct<char,false>
   
   int do_frac_digits() const { return 2; }
 
-  pattern do_pos_format() const
+  pattern do_neg_format() const
   {
     pattern pat = { { sign, value, space, symbol } };
     return pat;
@@ -51,7 +51,7 @@ struct My_money_io_b : public std::moneypunct<char,false>
   
   int do_frac_digits() const { return 2; }
 
-  pattern do_pos_format() const
+  pattern do_neg_format() const
   {
     pattern pat = { { sign, value, symbol, none } };
     return pat;
index efdec283e7a6b82b7953ead166b184774c97ed7a..95a0c735632be56d5ae6abf0b6af43c08430377e 100644 (file)
@@ -81,7 +81,7 @@ void test02()
   ios_base::iostate err10 = ios_base::goodbit;
   mon_get.get(is_it10, end, true, iss, err10, result10);
   VERIFY( result10 == digits2 );
-  VERIFY( err10 == ios_base::goodbit );
+  VERIFY( err10 == ios_base::eofbit );
 
   iss.str(L"(HKD .01)"); 
   iterator_type is_it11(iss);
@@ -89,7 +89,7 @@ void test02()
   ios_base::iostate err11 = ios_base::goodbit;
   mon_get.get(is_it11, end, true, iss, err11, result11);
   VERIFY( result11 == digits4 );
-  VERIFY( err11 == ios_base::goodbit );
+  VERIFY( err11 == ios_base::eofbit );
 
   // for the "en_HK" locale the parsing of the very same input streams must
   // be successful without showbase too, since the symbol field appears in
@@ -111,7 +111,7 @@ void test02()
   ios_base::iostate err13 = ios_base::goodbit;
   mon_get.get(is_it13, end, true, iss, err13, result13);
   VERIFY( result13 == digits2 );
-  VERIFY( err13 == ios_base::goodbit );
+  VERIFY( err13 == ios_base::eofbit );
 
   iss.str(L"(HKD .01)"); 
   iterator_type is_it14(iss);
@@ -119,7 +119,7 @@ void test02()
   ios_base::iostate err14 = ios_base::goodbit;
   mon_get.get(is_it14, end, true, iss, err14, result14);
   VERIFY( result14 == digits4 );
-  VERIFY( err14 == ios_base::goodbit );
+  VERIFY( err14 == ios_base::eofbit );
 }
 
 int main()
index cea15f5a85d4acea36264001d4332d60ab7286b7..cb1a2abfcbcb05448cc2c7c31798267fbc25937b 100644 (file)
@@ -28,8 +28,6 @@
 void test04()
 {
   using namespace std;
-  typedef money_base::part part;
-  typedef money_base::pattern pattern;
   typedef istreambuf_iterator<wchar_t> iterator_type;
 
   bool test __attribute__((unused)) = true;
@@ -64,7 +62,7 @@ void test04()
   ios_base::iostate err03 = ios_base::goodbit;
   mon_get.get(is_it03, end, true, iss, err03, result3);
   VERIFY( result3 == digits4 );
-  VERIFY( err03 == ios_base::goodbit );
+  VERIFY( err03 == ios_base::eofbit );
 }
 
 int main()
index 5d40fab761fefa4c574730c0502ac723ef26aec1..cebba6e3b80e27567d1847dc1c374e99a10e6e0c 100644 (file)
@@ -1,6 +1,6 @@
 // 2001-09-12 Benjamin Kosnik  <bkoz@redhat.com>
 
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004 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
@@ -35,12 +35,6 @@ struct My_money_io : public std::moneypunct<wchar_t,false>
   
   int do_frac_digits() const { return 2; }
 
-  pattern do_pos_format() const
-  {
-    pattern pat = { { symbol, none, sign, value } };
-    return pat;
-  }
-
   pattern do_neg_format() const
   {
     pattern pat = { { symbol, none, sign, value } };
index aeaa257378055781bf3b5099d8b74611f50d380a..2b86b36754235459566ce3a5192cb448043dc7f4 100644 (file)
@@ -34,7 +34,7 @@ struct My_money_io_a : public std::moneypunct<wchar_t,false>
   
   int do_frac_digits() const { return 2; }
 
-  pattern do_pos_format() const
+  pattern do_neg_format() const
   {
     pattern pat = { { sign, value, space, symbol } };
     return pat;
@@ -51,7 +51,7 @@ struct My_money_io_b : public std::moneypunct<wchar_t,false>
   
   int do_frac_digits() const { return 2; }
 
-  pattern do_pos_format() const
+  pattern do_neg_format() const
   {
     pattern pat = { { sign, value, symbol, none } };
     return pat;