hush: fix yet another fallout
hush: move fixed testsuites out of hush-bugs/*
diff --git a/shell/hush.c b/shell/hush.c
index 603e19f..82bad66 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -2691,19 +2691,18 @@
arg = ++p;
} /* end of "while (SPECIAL_VAR_SYMBOL is found) ..." */
- {
- int len = strlen(arg);
- if (len) {
- o_debug_list("expand_vars_to_list[a]", output, n);
- o_addstr(output, arg, len + 1);
- o_debug_list("expand_vars_to_list[b]", output, n);
- } else if (output->length == o_get_last_ptr(output, n)) { /* expansion is empty */
- if (!(ored_ch & 0x80)) { /* all vars were not quoted... */
- n--;
- /* allow to reuse list[n] later without re-growth */
- output->has_empty_slot = 1;
- }
- }
+ if (arg[0]) {
+ o_debug_list("expand_vars_to_list[a]", output, n);
+ o_addstr(output, arg, strlen(arg) + 1);
+ o_debug_list("expand_vars_to_list[b]", output, n);
+ } else if (output->length == o_get_last_ptr(output, n) /* expansion is empty */
+ && !(ored_ch & 0x80) /* and all vars were not quoted. */
+ ) {
+ n--;
+ /* allow to reuse list[n] later without re-growth */
+ output->has_empty_slot = 1;
+ } else {
+ o_addchr(output, '\0');
}
return n;
}
diff --git a/shell/hush_test/hush-bugs/tick2.tests b/shell/hush_test/hush-bugs/tick2.tests
deleted file mode 100755
index dc51805..0000000
--- a/shell/hush_test/hush-bugs/tick2.tests
+++ /dev/null
@@ -1,6 +0,0 @@
-# Bag: backticks are executed even inside not-taken if
-if false; then
- echo "FOO"
- tmp=`echo BAR >&2`
-fi
-echo BAZ
diff --git a/shell/hush_test/hush-bugs/tick.right b/shell/hush_test/hush-psubst/tick.right
similarity index 100%
rename from shell/hush_test/hush-bugs/tick.right
rename to shell/hush_test/hush-psubst/tick.right
diff --git a/shell/hush_test/hush-bugs/tick.tests b/shell/hush_test/hush-psubst/tick.tests
similarity index 100%
rename from shell/hush_test/hush-bugs/tick.tests
rename to shell/hush_test/hush-psubst/tick.tests
diff --git a/shell/hush_test/hush-bugs/tick2.right b/shell/hush_test/hush-psubst/tick2.right
similarity index 100%
rename from shell/hush_test/hush-bugs/tick2.right
rename to shell/hush_test/hush-psubst/tick2.right
diff --git a/shell/hush_test/hush-psubst/tick2.tests b/shell/hush_test/hush-psubst/tick2.tests
new file mode 100755
index 0000000..db4e944
--- /dev/null
+++ b/shell/hush_test/hush-psubst/tick2.tests
@@ -0,0 +1,5 @@
+if false; then
+ echo "FOO"
+ tmp=`echo BAR >&2`
+fi
+echo BAZ