diff options
-rw-r--r-- | shell/hush.c | 2 | ||||
-rw-r--r-- | shell/hush_test/hush-vars/var_bash_repl_empty_var.right | 1 | ||||
-rwxr-xr-x | shell/hush_test/hush-vars/var_bash_repl_empty_var.tests | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/shell/hush.c b/shell/hush.c index 6b8f1c88c..9403e1f6c 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -6617,7 +6617,7 @@ static NOINLINE int expand_one_var(o_string *output, int n, exp_word = p; p = strchr(p, SPECIAL_VAR_SYMBOL); *p = '\0'; - vallen = strlen(val); + vallen = val ? strlen(val) : 0; if (beg < 0) { /* negative beg counts from the end */ beg = (arith_t)vallen + beg; diff --git a/shell/hush_test/hush-vars/var_bash_repl_empty_var.right b/shell/hush_test/hush-vars/var_bash_repl_empty_var.right index 892916783..a8d1a3bef 100644 --- a/shell/hush_test/hush-vars/var_bash_repl_empty_var.right +++ b/shell/hush_test/hush-vars/var_bash_repl_empty_var.right @@ -1,2 +1,3 @@ +w Ok:0 diff --git a/shell/hush_test/hush-vars/var_bash_repl_empty_var.tests b/shell/hush_test/hush-vars/var_bash_repl_empty_var.tests index 73a43d38e..22aaba560 100755 --- a/shell/hush_test/hush-vars/var_bash_repl_empty_var.tests +++ b/shell/hush_test/hush-vars/var_bash_repl_empty_var.tests @@ -1,3 +1,5 @@ +unset v +echo ${v/*/w} v='' echo ${v/*/w} echo Ok:$? |