Hello,
I did some further investigations and found out that the problem is
that in expand_string_internal, *left is correctly set:
1772 sub[i] = expand_string_internal(s+1, TRUE, &s, yield == NULL);
4451 if (left != NULL) *left = s;
(gdb) p *left
$7 = (uschar *) 0xbfbffc88 "}{b} {true}{false}}"
But the change doesn't propagate back into eval_condition:
(gdb) n
4458 DEBUG(D_expand)
(gdb) n
4464 return yield;
(gdb) n
0x80711b0 4488 }
(gdb) n
eval_condition (s=0xbfbffc86 "{a}{b} {true}{false}}", yield=0xbfbfec88)
at expand.c:1773
1773 if (sub[i] == NULL) return NULL;
(gdb) p *s
$8 = 123 '{'
I don't know enough about C to decide if this a bug in exim which
happens do show only on this system or if its some obscure problem
with gcc or the kernel.
--Nikolaus
--
Ja zu der Rettung von dem Genitiv!