*/
static BOOL
-expand_check(const uschar *s, const uschar *name, uschar **result)
+expand_check(const uschar *s, const uschar *name, uschar **result, uschar ** errstr)
{
-if (s == NULL) *result = NULL; else
+if (!s)
+ *result = NULL;
+else if ( !(*result = expand_string(US s)) /* need to clean up const more */
+ && !expand_string_forcedfail
+ )
{
- *result = expand_string(US s); /* need to clean up const some more */
- if (*result == NULL && !expand_string_forcedfail)
- {
- log_write(0, LOG_MAIN|LOG_PANIC, "expansion of %s failed: %s", name,
- expand_string_message);
- return FALSE;
- }
+ *errstr = US"Internal error";
+ log_write(0, LOG_MAIN|LOG_PANIC, "expansion of %s failed: %s", name,
+ expand_string_message);
+ return FALSE;
}
return TRUE;
}
uschar * match = NULL;
int len;
uschar * list = NULL;
+int size = 0, pos = 0;
while ((ele = string_nextinlist(&mod, &insep, NULL, 0)))
if (ele[0] != '>')
if ( !match
|| Ustrncmp(ele, match, len) == 0 && ele[len] == '='
)
- list = string_append_listele(list, outsep, ele+len+1);
+ list = string_append_listele(list, &size, &pos, outsep, ele+len+1);
return list;
}