diff options
Diffstat (limited to 'patches/mpfr/3.1.2/200-vasprintf.patch')
-rw-r--r-- | patches/mpfr/3.1.2/200-vasprintf.patch | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/patches/mpfr/3.1.2/200-vasprintf.patch b/patches/mpfr/3.1.2/200-vasprintf.patch new file mode 100644 index 00000000..43848f7b --- /dev/null +++ b/patches/mpfr/3.1.2/200-vasprintf.patch @@ -0,0 +1,138 @@ +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 (); |