Bug 13369 - __verify_grouping (and __add_grouping?) not correct
Summary: __verify_grouping (and __add_grouping?) not correct
Alias: None
Product: gcc
Classification: Unclassified
Component: libstdc++ (show other bugs)
Version: 3.4.0
: P2 normal
Target Milestone: 3.3.3
Assignee: Paolo Carlini
Depends on:
Reported: 2003-12-09 14:15 UTC by Paolo Carlini
Modified: 2004-01-29 02:52 UTC (History)
1 user (show)

See Also:
Host: Any
Target: Any
Known to work:
Known to fail:
Last reconfirmed: 2003-12-09 14:30:09


Note You need to log in before you can comment on or make changes to this bug.
Description Paolo Carlini 2003-12-09 14:15:17 UTC
This is one those internal memos...

I'm comparing, p3 to our current implementation, some things seem
wrong. For instance, in __verify_grouping, when __j == __len, we exit the for
loop, then enter it again with __j reset to zero and do the for loop again.
This is not ok: instead, we should from now on keep __j fixed at __len - 1.
Example: "\04\03\02", means that 12,34,56,789,0123 is ok, that is, the final
\02 matches any number of initial two digits groups. 

Also, if a group has value <= 0 it means an unlimited size for the group (of
course it's meaningful only as the last group) and should match *any* possible
length for the first parsed group.
Comment 1 Paolo Carlini 2003-12-09 14:30:08 UTC
A value of CHAR_MAX for a group also means an unlimited group, and it's more 
interesting than zero, since the latter *cannot* actually occur in the stored
grouping: \0 delimits the string returned by __nl_langinfo_l(GROUPING, __cloc);

Comment 2 CVS Commits 2003-12-30 10:44:06 UTC
Subject: Bug 13369

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	paolo@gcc.gnu.org	2003-12-30 10:43:54

Modified files:
	libstdc++-v3   : ChangeLog 
	libstdc++-v3/include/bits: locale_facets.tcc 
Added files:
	libstdc++-v3/testsuite/22_locale/num_get/get/char: 13.cc 
	libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t: 13.cc 

Log message:
	2003-12-30  Paolo Carlini  <pcarlini@suse.de>
	PR libstdc++/13369
	* include/bits/locale_facets.tcc (__verify_grouping):
	Fix to deal properly with __grouping_tmp.size() >
	* testsuite/22_locale/num_get/get/char/13.cc: New.
	* testsuite/22_locale/num_get/get/wchar_t/13.cc: Ditto.


Comment 3 Paolo Carlini 2003-12-30 10:45:01 UTC
Fixed for 3.4.0.
Comment 4 CVS Commits 2004-01-29 02:52:28 UTC
Subject: Bug 13369

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_3-branch
Changes by:	paolo@gcc.gnu.org	2004-01-29 02:52:25

Modified files:
	libstdc++-v3   : ChangeLog 
	libstdc++-v3/include/bits: locale_facets.tcc 

Log message:
	2004-01-28  Paolo Carlini  <pcarlini@suse.de>
	PR libstdc++/13369
	* include/bits/locale_facets.tcc (__verify_grouping):
	Fix to deal properly with __grouping_tmp.size() >