From 5785a9ac39e7742d6b593b330dbb12a75f88cdfc Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Tue, 19 Sep 2017 20:24:30 +0000 Subject: mplibdir: sync with the upstream git-svn-id: svn://tug.org/texlive/trunk@45335 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/mplibdir/mp.w | 2 ++ Build/source/texk/web2c/mplibdir/mpmathbinary.w | 42 ++++++++++++++---------- Build/source/texk/web2c/mplibdir/mpmathdecimal.w | 9 ++--- 3 files changed, 31 insertions(+), 22 deletions(-) (limited to 'Build/source/texk/web2c/mplibdir') diff --git a/Build/source/texk/web2c/mplibdir/mp.w b/Build/source/texk/web2c/mplibdir/mp.w index c0682ed6715..dbdf5a0b930 100644 --- a/Build/source/texk/web2c/mplibdir/mp.w +++ b/Build/source/texk/web2c/mplibdir/mp.w @@ -1,3 +1,5 @@ +% $Id: mp.w 2137 2017-09-19 19:01:58Z luigi.scarso@gmail.com $ +% % This file is part of MetaPost; % the MetaPost program is in the public domain. % See the code in mpost.w for more info. diff --git a/Build/source/texk/web2c/mplibdir/mpmathbinary.w b/Build/source/texk/web2c/mplibdir/mpmathbinary.w index b15b7983685..c6df9ced4c8 100644 --- a/Build/source/texk/web2c/mplibdir/mpmathbinary.w +++ b/Build/source/texk/web2c/mplibdir/mpmathbinary.w @@ -221,31 +221,37 @@ static mpfr_t fraction_one_plus_mpfr_t; static mpfr_t PI_mpfr_t; static mpfr_t epsilon_mpfr_t; static mpfr_t EL_GORDO_mpfr_t; +static boolean initialized = false; + @ @c void init_binary_constants (void) { - mpfr_inits2 (precision_bits, one, minusone, zero, two_mpfr_t, three_mpfr_t, four_mpfr_t, fraction_multiplier_mpfr_t, + if (!initialized) { + mpfr_inits2 (precision_bits, one, minusone, zero, two_mpfr_t, three_mpfr_t, four_mpfr_t, fraction_multiplier_mpfr_t, fraction_one_mpfr_t, fraction_one_plus_mpfr_t, angle_multiplier_mpfr_t, PI_mpfr_t, epsilon_mpfr_t, EL_GORDO_mpfr_t, (mpfr_ptr) 0); - mpfr_set_si (one, 1, ROUNDING); - mpfr_set_si (minusone, -1, ROUNDING); - mpfr_set_si (zero, 0, ROUNDING); - mpfr_set_si (two_mpfr_t, two, ROUNDING); - mpfr_set_si (three_mpfr_t, three, ROUNDING); - mpfr_set_si (four_mpfr_t, four, ROUNDING); - mpfr_set_si (fraction_multiplier_mpfr_t, fraction_multiplier, ROUNDING); - mpfr_set_si (fraction_one_mpfr_t, fraction_one, ROUNDING); - mpfr_set_si (fraction_one_plus_mpfr_t, (fraction_one+1), ROUNDING); - mpfr_set_si (angle_multiplier_mpfr_t, angle_multiplier, ROUNDING); - mpfr_set_str (PI_mpfr_t, PI_STRING, 10, ROUNDING); - mpfr_set_str (epsilon_mpfr_t, epsilon, 10, ROUNDING); - mpfr_set_str (EL_GORDO_mpfr_t, EL_GORDO, 10, ROUNDING); + mpfr_set_si (one, 1, ROUNDING); + mpfr_set_si (minusone, -1, ROUNDING); + mpfr_set_si (zero, 0, ROUNDING); + mpfr_set_si (two_mpfr_t, two, ROUNDING); + mpfr_set_si (three_mpfr_t, three, ROUNDING); + mpfr_set_si (four_mpfr_t, four, ROUNDING); + mpfr_set_si (fraction_multiplier_mpfr_t, fraction_multiplier, ROUNDING); + mpfr_set_si (fraction_one_mpfr_t, fraction_one, ROUNDING); + mpfr_set_si (fraction_one_plus_mpfr_t, (fraction_one+1), ROUNDING); + mpfr_set_si (angle_multiplier_mpfr_t, angle_multiplier, ROUNDING); + mpfr_set_str (PI_mpfr_t, PI_STRING, 10, ROUNDING); + mpfr_set_str (epsilon_mpfr_t, epsilon, 10, ROUNDING); + mpfr_set_str (EL_GORDO_mpfr_t, EL_GORDO, 10, ROUNDING); + initialized = true; + } } void free_binary_constants (void) { - mpfr_clears (one, minusone, zero, two_mpfr_t, three_mpfr_t, four_mpfr_t, fraction_multiplier_mpfr_t, - fraction_one_mpfr_t, fraction_one_plus_mpfr_t, angle_multiplier_mpfr_t, PI_mpfr_t, - epsilon_mpfr_t, EL_GORDO_mpfr_t, (mpfr_ptr) 0); - mpfr_free_cache (); + /* For sake of speed, we accept this memory leak. */ + /*mpfr_clears (one, minusone, zero, two_mpfr_t, three_mpfr_t, four_mpfr_t, fraction_multiplier_mpfr_t,*/ + /* fraction_one_mpfr_t, fraction_one_plus_mpfr_t, angle_multiplier_mpfr_t, PI_mpfr_t, */ + /* epsilon_mpfr_t, EL_GORDO_mpfr_t, (mpfr_ptr) 0); */ + /*mpfr_free_cache ();*/ } @ |precision_max| is limited to 1000, because the precision of already initialized diff --git a/Build/source/texk/web2c/mplibdir/mpmathdecimal.w b/Build/source/texk/web2c/mplibdir/mpmathdecimal.w index aa86e2b650f..6503b8320fe 100644 --- a/Build/source/texk/web2c/mplibdir/mpmathdecimal.w +++ b/Build/source/texk/web2c/mplibdir/mpmathdecimal.w @@ -608,10 +608,11 @@ void mp_free_decimal_math (MP mp) { free_number (((math_data *)mp->math)->p_over_v_threshold_t); free_number (((math_data *)mp->math)->equation_threshold_t); free_number (((math_data *)mp->math)->tfm_warn_threshold_t); - for (i = 0; i <= last_cached_factorial; i++) { - free(factorials[i]); - } - free(factorials); + /* For sake of speed, we accept this memory leak. */ + /* for (i = 0; i <= last_cached_factorial; i++) {*/ + /* free(factorials[i]);*/ + /* }*/ + /* free(factorials); */ free(mp->math); } -- cgit v1.2.3