Commit f1e7988a by Paolo Carlini Committed by Paolo Carlini

locale_facets.tcc (time_get::do_get_year): Absolutely avoid dereferencing end iterators.

2003-10-29  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (time_get::do_get_year):
	Absolutely avoid dereferencing end iterators.
	(time_put::put): Minor clean up.

	* include/bits/locale_facets.tcc: Cosmetic reformattings.

From-SVN: r73049
parent 45967a8a
2003-10-29 Paolo Carlini <pcarlini@suse.de> 2003-10-29 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (time_get::do_get_year):
Absolutely avoid dereferencing end iterators.
(time_put::put): Minor clean up.
* include/bits/locale_facets.tcc: Cosmetic reformattings.
2003-10-29 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::_M_extract_float): * include/bits/locale_facets.tcc (num_get::_M_extract_float):
Revert the last commit, is not correct, sorry. Revert the last commit, is not correct, sorry.
......
...@@ -1958,15 +1958,11 @@ namespace std ...@@ -1958,15 +1958,11 @@ namespace std
const locale __loc = __io.getloc(); const locale __loc = __io.getloc();
const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
char_type __c = *__beg;
size_t __i = 0; size_t __i = 0;
string __digits; string __digits;
while (__i < 4 && __beg != __end && __ctype.is(ctype_base::digit, __c)) for (; __i < 4 && __beg != __end
{ && __ctype.is(ctype_base::digit, *__beg); ++__beg, ++__i)
__digits += __ctype.narrow(__c, 0); __digits += __ctype.narrow(*__beg, 0);
__c = *(++__beg);
++__i;
}
if (__i == 2 || __i == 4) if (__i == 2 || __i == 4)
{ {
long __l; long __l;
...@@ -1994,32 +1990,30 @@ namespace std ...@@ -1994,32 +1990,30 @@ namespace std
const locale __loc = __io.getloc(); const locale __loc = __io.getloc();
ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc); ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
for (; __beg != __end; ++__beg) for (; __beg != __end; ++__beg)
{ if (__ctype.narrow(*__beg, 0) != '%')
if (__ctype.narrow(*__beg, 0) != '%') {
{ *__s = *__beg;
*__s = *__beg; ++__s;
++__s; }
} else if (++__beg != __end)
else if (++__beg != __end) {
{ char __format;
char __format; char __mod = 0;
char __mod = 0; const char __c = __ctype.narrow(*__beg, 0);
const char __c = __ctype.narrow(*__beg, 0); if (__c != 'E' && __c != 'O')
if (__c != 'E' && __c != 'O') __format = __c;
__format = __c; else if (++__beg != __end)
else if (++__beg != __end) {
{ __mod = __c;
__mod = __c; __format = __ctype.narrow(*__beg, 0);
__format = __ctype.narrow(*__beg, 0); }
} else
else break;
break; __s = this->do_put(__s, __io, __fill, __tm,
__s = this->do_put(__s, __io, __fill, __tm, __format, __mod);
__format, __mod); }
} else
else break;
break;
}
return __s; return __s;
} }
...@@ -2115,7 +2109,7 @@ namespace std ...@@ -2115,7 +2109,7 @@ namespace std
} }
} }
template<typename _CharT> template<typename _CharT>
typename collate<_CharT>::string_type typename collate<_CharT>::string_type
collate<_CharT>:: collate<_CharT>::
do_transform(const _CharT* __lo, const _CharT* __hi) const do_transform(const _CharT* __lo, const _CharT* __hi) const
...@@ -2159,7 +2153,7 @@ namespace std ...@@ -2159,7 +2153,7 @@ namespace std
} }
} }
template<typename _CharT> template<typename _CharT>
long long
collate<_CharT>:: collate<_CharT>::
do_hash(const _CharT* __lo, const _CharT* __hi) const do_hash(const _CharT* __lo, const _CharT* __hi) const
...@@ -2265,20 +2259,20 @@ namespace std ...@@ -2265,20 +2259,20 @@ namespace std
__add_grouping(_CharT* __s, _CharT __sep, __add_grouping(_CharT* __s, _CharT __sep,
const char* __gbeg, const char* __gend, const char* __gbeg, const char* __gend,
const _CharT* __first, const _CharT* __last) const _CharT* __first, const _CharT* __last)
{ {
if (__last - __first > *__gbeg) if (__last - __first > *__gbeg)
{ {
const bool __bump = __gbeg + 1 != __gend; const bool __bump = __gbeg + 1 != __gend;
__s = std::__add_grouping(__s, __sep, __gbeg + __bump, __s = std::__add_grouping(__s, __sep, __gbeg + __bump,
__gend, __first, __last - *__gbeg); __gend, __first, __last - *__gbeg);
__first = __last - *__gbeg; __first = __last - *__gbeg;
*__s++ = __sep; *__s++ = __sep;
} }
do do
*__s++ = *__first++; *__s++ = *__first++;
while (__first != __last); while (__first != __last);
return __s; return __s;
} }
// Inhibit implicit instantiations for required instantiations, // Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere. // which are defined via explicit instantiations elsewhere.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment