| diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES |
| --- mpfr-3.1.2-a/PATCHES 2014-06-30 15:17:53.337268149 +0000 |
| +++ mpfr-3.1.2-b/PATCHES 2014-06-30 15:17:53.417270314 +0000 |
| @@ -0,0 +1 @@ |
| +vasprintf |
| diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION |
| --- mpfr-3.1.2-a/VERSION 2014-06-30 15:17:53.337268149 +0000 |
| +++ mpfr-3.1.2-b/VERSION 2014-06-30 15:17:53.413270206 +0000 |
| @@ -1 +1 @@ |
| -3.1.2-p9 |
| +3.1.2-p10 |
| diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h |
| --- mpfr-3.1.2-a/src/mpfr.h 2014-06-30 15:17:53.337268149 +0000 |
| +++ mpfr-3.1.2-b/src/mpfr.h 2014-06-30 15:17:53.413270206 +0000 |
| @@ -27,7 +27,7 @@ |
| #define MPFR_VERSION_MAJOR 3 |
| #define MPFR_VERSION_MINOR 1 |
| #define MPFR_VERSION_PATCHLEVEL 2 |
| -#define MPFR_VERSION_STRING "3.1.2-p9" |
| +#define MPFR_VERSION_STRING "3.1.2-p10" |
| |
| /* Macros dealing with MPFR VERSION */ |
| #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) |
| diff -Naurd mpfr-3.1.2-a/src/vasprintf.c mpfr-3.1.2-b/src/vasprintf.c |
| --- mpfr-3.1.2-a/src/vasprintf.c 2013-11-15 00:51:49.267334408 +0000 |
| +++ mpfr-3.1.2-b/src/vasprintf.c 2014-06-30 15:17:53.377269231 +0000 |
| @@ -884,14 +884,18 @@ |
| first digit, we want the exponent for radix two and the decimal |
| point AFTER the first digit. */ |
| { |
| - MPFR_ASSERTN (exp > MPFR_EMIN_MIN /4); /* possible overflow */ |
| + /* An integer overflow is normally not possible since MPFR_EXP_MIN |
| + is twice as large as MPFR_EMIN_MIN. */ |
| + MPFR_ASSERTN (exp > (MPFR_EXP_MIN + 3) / 4); |
| exp = (exp - 1) * 4; |
| } |
| else |
| /* EXP is the exponent for decimal point BEFORE the first digit, we |
| want the exponent for decimal point AFTER the first digit. */ |
| { |
| - MPFR_ASSERTN (exp > MPFR_EMIN_MIN); /* possible overflow */ |
| + /* An integer overflow is normally not possible since MPFR_EXP_MIN |
| + is twice as large as MPFR_EMIN_MIN. */ |
| + MPFR_ASSERTN (exp > MPFR_EXP_MIN); |
| --exp; |
| } |
| } |
| diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c |
| --- mpfr-3.1.2-a/src/version.c 2014-06-30 15:17:53.337268149 +0000 |
| +++ mpfr-3.1.2-b/src/version.c 2014-06-30 15:17:53.413270206 +0000 |
| @@ -25,5 +25,5 @@ |
| const char * |
| mpfr_get_version (void) |
| { |
| - return "3.1.2-p9"; |
| + return "3.1.2-p10"; |
| } |
| diff -Naurd mpfr-3.1.2-a/tests/tsprintf.c mpfr-3.1.2-b/tests/tsprintf.c |
| --- mpfr-3.1.2-a/tests/tsprintf.c 2013-11-15 00:51:49.267334408 +0000 |
| +++ mpfr-3.1.2-b/tests/tsprintf.c 2014-06-30 15:17:53.377269231 +0000 |
| @@ -1184,6 +1184,69 @@ |
| check_emax_aux (MPFR_EMAX_MAX); |
| } |
| |
| +static void |
| +check_emin_aux (mpfr_exp_t e) |
| +{ |
| + mpfr_t x; |
| + char *s1, s2[256]; |
| + int i; |
| + mpfr_exp_t emin; |
| + mpz_t ee; |
| + |
| + MPFR_ASSERTN (e >= LONG_MIN); |
| + emin = mpfr_get_emin (); |
| + set_emin (e); |
| + |
| + mpfr_init2 (x, 16); |
| + mpz_init (ee); |
| + |
| + mpfr_setmin (x, e); |
| + mpz_set_si (ee, e); |
| + mpz_sub_ui (ee, ee, 1); |
| + |
| + i = mpfr_asprintf (&s1, "%Ra", x); |
| + MPFR_ASSERTN (i > 0); |
| + |
| + gmp_snprintf (s2, 256, "0x1p%Zd", ee); |
| + |
| + if (strcmp (s1, s2) != 0) |
| + { |
| + printf ("Error in check_emin_aux for emin = %ld\n", (long) e); |
| + printf ("Expected %s\n", s2); |
| + printf ("Got %s\n", s1); |
| + exit (1); |
| + } |
| + |
| + mpfr_free_str (s1); |
| + |
| + i = mpfr_asprintf (&s1, "%Rb", x); |
| + MPFR_ASSERTN (i > 0); |
| + |
| + gmp_snprintf (s2, 256, "1p%Zd", ee); |
| + |
| + if (strcmp (s1, s2) != 0) |
| + { |
| + printf ("Error in check_emin_aux for emin = %ld\n", (long) e); |
| + printf ("Expected %s\n", s2); |
| + printf ("Got %s\n", s1); |
| + exit (1); |
| + } |
| + |
| + mpfr_free_str (s1); |
| + |
| + mpfr_clear (x); |
| + mpz_clear (ee); |
| + set_emin (emin); |
| +} |
| + |
| +static void |
| +check_emin (void) |
| +{ |
| + check_emin_aux (-15); |
| + check_emin_aux (mpfr_get_emin ()); |
| + check_emin_aux (MPFR_EMIN_MIN); |
| +} |
| + |
| int |
| main (int argc, char **argv) |
| { |
| @@ -1203,6 +1266,7 @@ |
| decimal (); |
| mixed (); |
| check_emax (); |
| + check_emin (); |
| |
| #if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE) |
| locale_da_DK (); |