From: Paul Eggert Date: Fri, 3 Mar 2017 16:45:10 +0000 (-0800) Subject: Merge from gnulib X-Git-Tag: emacs-26.0.90~655 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f1fe3fcfc568c1527714ff3a95e678816e2787d4;p=emacs.git Merge from gnulib This incorporates: 2017-02-25 maintainer-makefile: Fix AC_PROG_SED with autoconf cache. 2017-02-24 ftoastr: port to -Wdouble-promotion * lib/ftoastr.c, m4/gnulib-common.m4: Copy from gnulib. --- diff --git a/lib/ftoastr.c b/lib/ftoastr.c index 826340c3f77..ef861e2237a 100644 --- a/lib/ftoastr.c +++ b/lib/ftoastr.c @@ -39,6 +39,7 @@ # define FLOAT_MIN LDBL_MIN # define FLOAT_PREC_BOUND _GL_LDBL_PREC_BOUND # define FTOASTR ldtoastr +# define PROMOTED_FLOAT long double # if HAVE_C99_STRTOLD # define STRTOF strtold # endif @@ -48,6 +49,7 @@ # define FLOAT_MIN DBL_MIN # define FLOAT_PREC_BOUND _GL_DBL_PREC_BOUND # define FTOASTR dtoastr +# define PROMOTED_FLOAT double #else # define LENGTH 1 # define FLOAT float @@ -55,6 +57,7 @@ # define FLOAT_MIN FLT_MIN # define FLOAT_PREC_BOUND _GL_FLT_PREC_BOUND # define FTOASTR ftoastr +# define PROMOTED_FLOAT double # if HAVE_STRTOF # define STRTOF strtof # endif @@ -77,20 +80,21 @@ static int ftoastr_snprintf (char *buf, size_t bufsize, char const *format, int width, int prec, FLOAT x) { + PROMOTED_FLOAT promoted_x = x; char width_0_buffer[LENGTH == 1 ? FLT_BUFSIZE_BOUND : LENGTH == 2 ? DBL_BUFSIZE_BOUND : LDBL_BUFSIZE_BOUND]; int n = width; if (bufsize < sizeof width_0_buffer) { - n = sprintf (width_0_buffer, format, 0, prec, x); + n = sprintf (width_0_buffer, format, 0, prec, promoted_x); if (n < 0) return n; if (n < width) n = width; } if (n < bufsize) - n = sprintf (buf, format, width, prec, x); + n = sprintf (buf, format, width, prec, promoted_x); return n; } #endif @@ -106,6 +110,7 @@ FTOASTR (char *buf, size_t bufsize, int flags, int width, FLOAT x) ; also see the 2010-03-21 draft . */ + PROMOTED_FLOAT promoted_x = x; char format[sizeof "%-+ 0*.*Lg"]; FLOAT abs_x = x < 0 ? -x : x; int prec; @@ -128,7 +133,7 @@ FTOASTR (char *buf, size_t bufsize, int flags, int width, FLOAT x) for (prec = abs_x < FLOAT_MIN ? 1 : FLOAT_DIG; ; prec++) { - int n = snprintf (buf, bufsize, format, width, prec, x); + int n = snprintf (buf, bufsize, format, width, prec, promoted_x); if (n < 0 || FLOAT_PREC_BOUND <= prec || (n < bufsize && STRTOF (buf, NULL) == x)) diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4 index 7d9b40b79b8..7b957f8a59d 100644 --- a/m4/gnulib-common.m4 +++ b/m4/gnulib-common.m4 @@ -1,4 +1,4 @@ -# gnulib-common.m4 serial 36 +# gnulib-common.m4 serial 37 dnl Copyright (C) 2007-2017 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -456,7 +456,9 @@ m4_ifndef([AC_PROG_SED], else ac_cv_path_SED=$SED fi + ]) SED="$ac_cv_path_SED" AC_SUBST([SED])dnl rm -f conftest.sed -])])]) +]) +])