+2004-11-09 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (time_get<>::do_get_weekday,
+ time_get<>::do_get_monthname): Absolutely avoid dereferencing
+ end iterators.
+
+ * include/bits/locale_facets.tcc (time_get<>::_M_extract_name):
+ Minor tweak.
+
2004-11-08 Benjamin Kosnik <bkoz@redhat.com>
Doug Gregor <dgregor@cs.indiana.edu>
for (size_t __i2 = 1; __i2 < __nmatches; ++__i2)
__minlen = std::min(__minlen,
__traits_type::length(__names[__matches[__i2]]));
- ++__pos;
- ++__beg;
+ ++__beg, ++__pos;
if (__pos < __minlen && __beg != __end)
for (size_t __i3 = 0; __i3 < __nmatches;)
{
if (__nmatches == 1)
{
// Make sure found name is completely extracted.
- ++__pos;
- ++__beg;
+ ++__beg, ++__pos;
__name = __names[__matches[0]];
const size_t __len = __traits_type::length(__name);
while (__pos < __len && __beg != __end && __name[__pos] == *__beg)
// __days array with the same index points to a day, and that
// day's abbreviated form.
// NB: Also assumes that an abbreviated name is a subset of the name.
- if (!__err)
+ if (!__err && __beg != __end)
{
size_t __pos = __traits_type::length(__days[__tmpwday]);
__tp._M_days(__days);
if (__len != __pos)
__err |= ios_base::failbit;
}
- if (!__err)
- __tm->tm_wday = __tmpwday;
}
+ if (!__err)
+ __tm->tm_wday = __tmpwday;
+
if (__beg == __end)
__err |= ios_base::eofbit;
return __beg;
// __months array with the same index points to a month, and that
// month's abbreviated form.
// NB: Also assumes that an abbreviated name is a subset of the name.
- if (!__err)
+ if (!__err && __beg != __end)
{
size_t __pos = __traits_type::length(__months[__tmpmon]);
__tp._M_months(__months);
if (__len != __pos)
__err |= ios_base::failbit;
}
- if (!__err)
- __tm->tm_mon = __tmpmon;
}
+ if (!__err)
+ __tm->tm_mon = __tmpmon;
if (__beg == __end)
__err |= ios_base::eofbit;