From 87a7c5a1efaa2c339149c3ccbabdf2952824e424 Mon Sep 17 00:00:00 2001
From: Brendan Kehoe <brendan@zen.org>
Date: Tue, 27 May 2003 17:14:49 -0400
Subject: [PATCH] locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and make sure
 the number of digits required after the...

2003-05-26  Brendan Kehoe  <brendan@zen.org>

    * include/bits/locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and
    make sure the number of digits required after the decimal-point
    (if any) is exactly the value returned by frac_digits().

From-SVN: r67192
---
 libstdc++-v3/ChangeLog                      |  6 ++++++
 libstdc++-v3/include/bits/locale_facets.tcc | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b798a169ab48..49115a46864c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2003-05-26  Brendan Kehoe  <brendan@zen.org>
+
+	* include/bits/locale_facets.tcc (do_get): Honor $22.2.6.3.3/8 and
+	make sure the number of digits required after the decimal-point
+	(if any) is exactly the value returned by frac_digits().
+
 2003-05-27  Jonathan Wakely  <redi@gcc.gnu.org>
 
 	* include/std/std_istream.h, include/std/std_ostream.h: Typo in comment.
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index f44531799f01..624018285d8e 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -1271,6 +1271,18 @@ namespace std
       if (__c == __eof)
 	__err |= ios_base::eofbit;
 
+      // Iff not enough digits were supplied after the decimal-point.
+      if (__testdecfound)
+	{
+	  const int __frac = __intl ? __mpt.frac_digits() 
+				    : __mpf.frac_digits();
+	  if (__frac > 0)
+	    {
+	      if (__sep_pos != __frac)
+		__testvalid = false;
+	    }
+	}
+
       // Iff valid sequence is not recognized.
       if (!__testvalid || !__tmp_units.size())
 	__err |= ios_base::failbit;
-- 
GitLab