Jonathan Wakely <jwak...@redhat.com> writes: > diff --git a/libstdc++-v3/src/c++98/locale_facets.cc > b/libstdc++-v3/src/c++98/locale_facets.cc > index 3669acb..7ed04e6 100644 > --- a/libstdc++-v3/src/c++98/locale_facets.cc > +++ b/libstdc++-v3/src/c++98/locale_facets.cc > @@ -69,19 +69,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > if (__flags & ios_base::showpoint) > *__fptr++ = '#'; > > - // As per DR 231: _always_, not only when > - // __flags & ios_base::fixed || __prec > 0 > - *__fptr++ = '.'; > - *__fptr++ = '*'; > + ios_base::fmtflags __fltfield = __flags & ios_base::floatfield; > + > + if (__fltfield != (ios_base::fixed | ios_base::scientific)) > + { > + // As per DR 231: not only when __flags & ios_base::fixed || __prec > > 0 > + *__fptr++ = '.'; > + *__fptr++ = '*'; > + } > > if (__mod) > *__fptr++ = __mod; > - ios_base::fmtflags __fltfield = __flags & ios_base::floatfield; > // [22.2.2.2.2] Table 58 > if (__fltfield == ios_base::fixed) > *__fptr++ = 'f'; > else if (__fltfield == ios_base::scientific) > *__fptr++ = (__flags & ios_base::uppercase) ? 'E' : 'e'; > +#ifdef _GLIBCXX_USE_C99 > + else if (__fltfield == (ios_base::fixed | ios_base::scientific)) > + *__fptr++ = (__flags & ios_base::uppercase) ? 'A' : 'a'; > +#endif
That cannot work. std::__convert_from_v always passes __prec before __v, but the format is "%a". Andreas. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."