This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2] libstdc++: Add hexfloat/defaultfloat io manipulators.


Jonathan Wakely <jwakely@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, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]