case vtype_string_func:
{
stringptr_fn_t * fn = (stringptr_fn_t *) val;
- return fn();
+ uschar* s = fn();
+ return s ? s : US"";
}
case vtype_pspace:
case 2:
case 3: goto EXPAND_FAILED;
}
- for (uschar sep = *sub[0], c; c = *sub[1]; sub[1]++)
+ if (*sub[1]) for (uschar sep = *sub[0], c; c = *sub[1]; sub[1]++)
{
if (c == sep) yield = string_catn(yield, sub[1], 1);
yield = string_catn(yield, sub[1], 1);
}
+ else yield = string_catn(yield, US" ", 1);
continue;
}
{
int cnt = 0;
int sep = 0;
- uschar buffer[256];
- while (string_nextinlist(CUSS &sub, &sep, buffer, sizeof(buffer))) cnt++;
+ while (string_nextinlist(CUSS &sub, &sep, NULL, 0)) cnt++;
yield = string_fmt_append(yield, "%d", cnt);
continue;
}