[PATCH] mini-gmp: pass correct old_size to custom reallocate function

Niels Möller nisse at lysator.liu.se
Wed May 27 18:46:09 UTC 2020


minux <minux.ma at gmail.com> writes:

> patch updated. I actually had this question while making changes. But
> I took advantage of the naming convention to use gmp_xfree for the
> two-parameter version so that I do not have to fix all use of
> one-parameter gmp_free in one pass. And then for consistency, I also
> renamed realloc to xrealloc.

Committed at last, with minor changes (see below).

> --- a/mini-gmp/tests/t-mpq_str.c	Mon Mar 09 17:01:17 2020 +0100
> +++ b/mini-gmp/tests/t-mpq_str.c	Thu Mar 12 15:50:15 2020 -0400
> @@ -1,6 +1,6 @@
>  /*
>  
> -Copyright 2012-2014, 2016, 2018 Free Software Foundation, Inc.
> +Copyright 2012-2014, 2016, 2018, 2020 Free Software Foundation, Inc.
>  
>  This file is part of the GNU MP Library test suite.
>  
> @@ -144,7 +144,7 @@
>    char *ap;
>    char *bp;
>    char *rp;
> -  size_t rn, arn;
> +  size_t rn;
>  
>    mpq_t a, b;
>  
> @@ -173,7 +173,6 @@
>  	    }
>  
>  	  rn = strlen (rp);
> -	  arn = rn - (rp[0] == '-');
>  
>  	  bp = mpq_get_str (NULL, (i&1 || base > 36) ? base: -base, a);
>  	  if (strcmp (bp, rp))
> @@ -244,7 +243,17 @@
>  
>  	  free (ap);
>  	  free (rp);
> -	  testfree (bp);
> +	  testfree (bp, strlen(bp) + 1);
> +	}
> +
> +      /* Check behaviour (undocumented, but conforming with GMP) when
> +	 base is out of range. */
> +      base = (i&1) ? 63: -37;
> +      if (mpq_get_str (bp, base, a))
> +	{
> +	  fprintf (stderr, "mpz_get_str did not fail, as expected:\n");
> +	  fprintf (stderr, "  base = %d\n", base);
> +	  abort ();

Dropped this test, since it seems unrelated.

> --- a/mini-gmp/tests/testutils.c	Mon Mar 09 17:01:17 2020 +0100
> +++ b/mini-gmp/tests/testutils.c	Thu Mar 12 15:50:15 2020 -0400
> @@ -84,31 +84,44 @@
>  static void *
>  tu_realloc (void *p, size_t old_size, size_t new_size)
>  {
> -  size_t *block = block_check (p);
> -  block = (size_t *) realloc (block, sizeof(size_t) + new_size + sizeof(block_end));
> +  size_t *old_block = block_check (p), *block;

Declare block on a line of its own,

  size_t *block;

Thanks!
/Niels Möller

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.


More information about the gmp-devel mailing list