dont crash if the variable we do substitution on is not set

This commit is contained in:
Mike Frysinger 2009-04-09 23:00:33 +00:00
parent d68ae08cde
commit 57e746781c

View File

@ -2025,18 +2025,20 @@ static int expand_vars_to_list(o_string *output, int n, char *arg, char or_mask)
debug_printf_expand("%s\n", val);
} else if (exp_off) {
if (exp_op == '%' || exp_op == '#') {
/* we need to do a pattern match */
bool zero;
char *loc;
scan_t scan = pick_scan(exp_op, *exp_word, &zero);
if (exp_op == *exp_word) /* ## or %% */
++exp_word;
val = dyn_val = xstrdup(val);
loc = scan(dyn_val, exp_word, zero);
if (zero)
val = loc;
else
*loc = '\0';
if (val) {
/* we need to do a pattern match */
bool zero;
char *loc;
scan_t scan = pick_scan(exp_op, *exp_word, &zero);
if (exp_op == *exp_word) /* ## or %% */
++exp_word;
val = dyn_val = xstrdup(val);
loc = scan(dyn_val, exp_word, zero);
if (zero)
val = loc;
else
*loc = '\0';
}
} else {
/* we need to do an expansion */
int exp_test = (!val || (exp_null && !val[0]));