From: Mark-Jason Dominus Date: Mon, 23 Apr 2001 10:30:21 +0000 (-0400) Subject: Re: PATCH 5.7.1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=30ad99e7b3f61a34d0ea0f6fdc5b568bb12f039e;p=p5sagit%2Fp5-mst-13.2.git Re: PATCH 5.7.1 Message-ID: <20010423143021.17335.qmail@plover.com> p4raw-id: //depot/perl@9792 --- diff --git a/perl.h b/perl.h index edb14e5..01a6d3f 100644 --- a/perl.h +++ b/perl.h @@ -3483,23 +3483,21 @@ typedef struct am_table_short AMTS; * nice_chunk and nice_chunk size need to be set * and queried under the protection of sv_mutex */ -#define offer_nice_chunk(chunk, chunk_size) \ - STMT_START { \ - LOCK_SV_MUTEX; \ - if (!PL_nice_chunk) { \ - PL_nice_chunk = (char*)(chunk); \ - PL_nice_chunk_size = (chunk_size); \ - } \ - else if (chunk_size > PL_nice_chunk_size) { \ - Safefree(PL_nice_chunk); \ - PL_nice_chunk = (char*)(chunk); \ - PL_nice_chunk_size = (chunk_size); \ - } \ - else { \ - Safefree(chunk); \ - } \ - UNLOCK_SV_MUTEX; \ - } STMT_END +#define offer_nice_chunk(chunk, chunk_size) STMT_START { \ + void *new_chunk; \ + U32 new_chunk_size; \ + LOCK_SV_MUTEX; \ + new_chunk = (void *)(chunk); \ + new_chunk_size = (chunk_size); \ + if (new_chunk_size > PL_nice_chunk_size) { \ + if (PL_nice_chunk) Safefree(PL_nice_chunk); \ + PL_nice_chunk = new_chunk; \ + PL_nice_chunk_size = new_chunk_size; \ + } else { \ + Safefree(chunk); \ + } \ + UNLOCK_SV_MUTEX; \ + } STMT_END #ifdef HAS_SEM # include diff --git a/sv.c b/sv.c index 5ce8a1a..e8c2372 100644 --- a/sv.c +++ b/sv.c @@ -137,6 +137,7 @@ S_more_sv(pTHX) if (PL_nice_chunk) { sv_add_arena(PL_nice_chunk, PL_nice_chunk_size, 0); PL_nice_chunk = Nullch; + PL_nice_chunk_size = 0; } else { char *chunk; /* must use New here to match call to */