On Thu, 27 Jun 2002, Chad Leigh -- Shire.Net LLC wrote:
> This just started happening in my Exim 4.05 system. I am doing live
> tests with a couple of my domains and I qwatch the log files as I switch
> from 3.36 to 4.05.
>
> 2002-06-27 21:44:42 17NfFc-000C6q-00 internal error:
> store_reset(135077889) failed: pool=0 expand.c 3047
>
> Is it bad? It happens every queue run...
This turned out to be a new bug that I accidentally introduced into
4.05. It was provoked by a reference in a system filter to a header such
as $h_to: when an incoming message contained a header of that name, but
with no data. In case anybody else hits this problem before I get the next
release out (I did receive one other report), I'm posting the patch
below.
Philip
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
*** exim-4.05/src/expand.c Thu Jun 13 10:32:04 2002
--- expand.c Mon Jul 1 10:09:01 2002
***************
*** 640,646 ****
}
Ustrncpy(ptr, t, ilen);
ptr += ilen;
! if (comma != 0)
{
ptr[-1] = ',';
*ptr++ = '\n';
--- 640,646 ----
}
Ustrncpy(ptr, t, ilen);
ptr += ilen;
! if (comma != 0 && ilen > 0)
{
ptr[-1] = ',';
*ptr++ = '\n';
***************
*** 665,671 ****
/* Remove trailing white space (includes newlines) and a redundant added comma
if present. */
! if (comma != 0) ptr -= 2;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
return yield;
--- 665,671 ----
/* Remove trailing white space (includes newlines) and a redundant added comma
if present. */
! if (comma != 0 && ptr > yield) ptr -= 2;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
return yield;