[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compilation error caused by SPARE_MEMORY
From: |
Donald Ephraim Curtis |
Subject: |
Re: Compilation error caused by SPARE_MEMORY |
Date: |
Mon, 6 Jun 2011 07:02:40 -0500 |
I'm sorry, I've looked at the code currently in alloc.c (revision 104510) and I
don't see how this is doing anything other than defining LARGE_REQUEST as (1 <<
14)
Here is the relevant code:
/* Amount of spare memory to keep in large reserve block. */
#define SPARE_MEMORY (1 << 14)
#ifdef SYSTEM_MALLOC
# define LARGE_REQUEST (1 << 14)
#else
# define LARGE_REQUEST SPARE_MEMORY
#endif
But shouldn't there still be a check to see if SPARE_MEMORY is defined already?
On Jun 5, 2011, at 23:59, Paul Eggert wrote:
> On 06/05/11 14:54, Glenn Morris wrote:
>
>> As reported in http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8800
>
> Thanks, that is a bug I recently introduced; it affects hosts such
> as MacOS that define SYSTEM_MALLOC. I fixed it in the trunk with
> bzr 104508, as follows:
>
> === modified file 'src/ChangeLog'
> --- src/ChangeLog 2011-06-05 22:46:26 +0000
> +++ src/ChangeLog 2011-06-06 04:54:23 +0000
> @@ -1,3 +1,11 @@
> +2011-06-06 Paul Eggert <address@hidden>
> +
> + * alloc.c (memory_full) [SYSTEM_MALLOC]: Port to MacOS (Bug#8800).
> + Do not assume that spare memory exists; that assumption is valid
> + only if SYSTEM_MALLOC.
> + (LARGE_REQUEST): New macro, so that the issue of large requests
> + is separated from the issue of spare memory.
> +
> 2011-06-05 Andreas Schwab <address@hidden>
>
> * editfns.c (Fformat): Correctly handle zero flag with hexadecimal
>
> === modified file 'src/alloc.c'
> --- src/alloc.c 2011-06-02 08:35:28 +0000
> +++ src/alloc.c 2011-06-06 04:54:23 +0000
> @@ -196,6 +196,12 @@
> #define SPARE_MEMORY (1 << 14)
> #endif
>
> +#ifdef SYSTEM_MALLOC
> +# define LARGE_REQUEST (1 << 14)
> +#else
> +# define LARGE_REQUEST SPARE_MEMORY
> +#endif
> +
> /* Number of extra blocks malloc should get when it needs more core. */
>
> static int malloc_hysteresis;
> @@ -3283,15 +3289,12 @@
> {
> /* Do not go into hysterics merely because a large request failed. */
> int enough_free_memory = 0;
> - if (SPARE_MEMORY < nbytes)
> + if (LARGE_REQUEST < nbytes)
> {
> - void *p = malloc (SPARE_MEMORY);
> + void *p = malloc (LARGE_REQUEST);
> if (p)
> {
> - if (spare_memory[0])
> - free (p);
> - else
> - spare_memory[0] = p;
> + free (p);
> enough_free_memory = 1;
> }
> }
>
>