From 6b5b7e0caf05fae77569061d2487e7de9bcfda75 Mon Sep 17 00:00:00 2001 From: "Heiko Schlittermann (HS12-RIPE)" Date: Tue, 26 May 2020 12:28:43 +0200 Subject: [PATCH] Make def: compatible between "static" and "dynamic" vars. Some variables are simple pointers to internal memory (e.g. vtype_stringptr), other variables are dynamically filled with content (e.g. vtype_string_func). The static variables contain "" if they're not defined yet. At least on dynamic variable (recipients, backed by fn_recipients()) returned NULL instead of "", which lead to unexpected results on def:recipients. To keep the functions usable in places where it makes sense to return NULL and "" as distinct values, I didn't touch the functions, but the evaluation logic in find_variable(). --- src/src/expand.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/src/expand.c b/src/src/expand.c index 2c29c26d5..26f7f10ac 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -2066,7 +2066,8 @@ switch (vp->type) case vtype_string_func: { stringptr_fn_t * fn = (stringptr_fn_t *) val; - return fn(); + uschar* s = fn(); + return s ? s : US""; } case vtype_pspace: -- 2.30.2