On 7 Mar 2002 michael@??? wrote:
> exim -be '${if ={1}{1} {true}{${if ={1}{1} {true}{${if ={1}{1} {true}fail}}}}}'
>
> the result is
>
> true}}
It was a stupidity in the code. Below are the patches for 3.35 and 4.01.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
-----------------------------------------------------------------------
*** exim-3.35/src/expand.c Tue Feb 19 10:10:43 2002
--- expand.c Fri Mar 8 15:14:29 2002
***************
*** 1266,1272 ****
s = read_name(name, sizeof(name), s, "_");
if (strcmp(name, "fail") == 0)
{
! if (!yes)
{
while (isspace((uschar)*s)) s++;
if (*s++ != '}') goto FAILED_CURLY;
--- 1266,1272 ----
s = read_name(name, sizeof(name), s, "_");
if (strcmp(name, "fail") == 0)
{
! if (!yes && !skipping)
{
while (isspace((uschar)*s)) s++;
if (*s++ != '}') goto FAILED_CURLY;
-----------------------------------------------------------------------
-----------------------------------------------------------------------
*** exim-4.01/src/expand.c Mon Mar 4 10:03:42 2002
--- expand.c Fri Mar 8 15:09:04 2002
***************
*** 1434,1440 ****
s = read_name(name, sizeof(name), s, US"_");
if (Ustrcmp(name, "fail") == 0)
{
! if (!yes)
{
while (isspace(*s)) s++;
if (*s++ != '}') goto FAILED_CURLY;
--- 1434,1440 ----
s = read_name(name, sizeof(name), s, US"_");
if (Ustrcmp(name, "fail") == 0)
{
! if (!yes && !skipping)
{
while (isspace(*s)) s++;
if (*s++ != '}') goto FAILED_CURLY;
-----------------------------------------------------------------------