Bug 12750 - time_get::_M_extract_via_format doesn't deal with 'e'
Summary: time_get::_M_extract_via_format doesn't deal with 'e'
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: libstdc++ (show other bugs)
Version: 3.4.0
: P2 normal
Target Milestone: 3.4.0
Assignee: Paolo Carlini
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-10-23 21:27 UTC by Paolo Carlini
Modified: 2003-12-04 09:48 UTC (History)
1 user (show)

See Also:
Host: Any
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2003-10-23 21:27:45


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Paolo Carlini 2003-10-23 21:27:13 UTC
Consider, f.i., "is_IS": its strftime format is '%a %e.%b %Y'.

However, _M_extract_via_format doesn't have a case for 'e', and, moreover, it's
not trivial to add one, since in the single digit case we have to skip the
initial space, but _M_extract_num cannot currently do that.
Comment 1 GCC Commits 2003-10-27 16:21:18 UTC
Subject: Bug 12750

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	paolo@gcc.gnu.org	2003-10-27 16:21:14

Modified files:
	libstdc++-v3   : ChangeLog 
	libstdc++-v3/include/bits: locale_facets.tcc locale_facets.h 
	libstdc++-v3/src: locale-inst.cc 
Added files:
	libstdc++-v3/testsuite/22_locale/time_get/get_date/char: 
	                                                         12750.cc 
	libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t: 
	                                                            12750.cc 
	libstdc++-v3/testsuite/22_locale/num_get/get/char: 7.cc 
	libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t: 7.cc 

Log message:
	2003-10-27  Paolo Carlini  <pcarlini@suse.de>
	
	PR libstdc++/12750
	* include/bits/locale_facets.tcc
	(time_get::_M_extract_via_format): Deal with code 'e'.
	* testsuite/22_locale/time_get/get_date/char/12750.cc: New.
	* testsuite/22_locale/time_get/get_date/wchar_t/12750.cc: Ditto.
	
	* include/bits/locale_facets.tcc
	(time_get::_M_extract_via_format): Tweak to absolutely avoid
	dereferencing end iterators.
	
	* include/bits/locale_facets.h (__verify_grouping):
	Const-ify second parameter.
	* include/bits/locale_facets.tcc (__verify_grouping): Ditto.
	* src/locale-inst.cc (__verify_grouping): Ditto.
	
	2003-10-27  Paolo Carlini  <pcarlini@suse.de>
	
	* include/bits/locale_facets.tcc (num_get::_M_extract_float):
	Various things: 1- Avoid absolutely end iterator dereferences;
	2- Improve performance-wise the code skipping leading zeros;
	3- Fix two bugs wrt early bail out in case of parsing errors
	(see testcases); 4- General clean up.
	(num_get::_M_extract_int): Likewise, except 3-. Additionally,
	use __builtin_expect to favor base 10 inputs.
	* testsuite/22_locale/num_get/get/char/7.cc: New.
	* testsuite/22_locale/num_get/get/wchar_t/7.cc: Ditto.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&r1=1.2049&r2=1.2050
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/include/bits/locale_facets.tcc.diff?cvsroot=gcc&r1=1.132&r2=1.133
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/include/bits/locale_facets.h.diff?cvsroot=gcc&r1=1.68&r2=1.69
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/src/locale-inst.cc.diff?cvsroot=gcc&r1=1.44&r2=1.45
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc.diff?cvsroot=gcc&r1=NONE&r2=1.1

Comment 2 Paolo Carlini 2003-10-27 16:27:39 UTC
Fixed for 3.4.
Comment 3 GCC Commits 2004-08-16 17:35:19 UTC
Subject: Bug 12750

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	hammer-3_3-branch
Changes by:	paolo@gcc.gnu.org	2004-08-16 17:35:12

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

Log message:
	2004-08-16  Paolo Carlini  <pcarlini@suse.de>
	
	PR libstdc++/12750
	* include/bits/locale_facets.tcc
	(time_get::_M_extract_via_format): Deal with code 'e'.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.hammer.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=1.1.2.40&r2=1.1.2.41
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/include/bits/locale_facets.tcc.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=1.82.2.25&r2=1.82.2.26