bc: fix handling of 'return' not in functions, and 'define f()<newline>{...}'

function                                             old     new   delta
zbc_vm_process                                       561     597     +36
zbc_parse_stmt_possibly_auto                        2232    2253     +21
zbc_lex_number                                       192     200      +8
zbc_num_divmod                                       150     156      +6
bc_vm_run                                            134     139      +5
bc_vm_init                                           757     760      +3
bc_num_printNewline                                   51      54      +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 7/0 up/down: 82/0)               Total: 82 bytes
   text	   data	    bss	    dec	    hex	filename
 982138	    485	   7296	 989919	  f1adf	busybox_old
 982247	    485	   7296	 990028	  f1b4c	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/testsuite/bc.tests b/testsuite/bc.tests
index 86220ad..093b395 100755
--- a/testsuite/bc.tests
+++ b/testsuite/bc.tests
@@ -51,6 +51,11 @@
 	"8\n9\n" \
 	"" "define w() { auto z; return 8; }; w(); 9"
 
+testing "bc define with body on next line" \
+	"bc" \
+	"8\n9\n" \
+	"" "define w()\n{ auto z; return 8; }\nw()\n9"
+
 tar xJf bc_large.tar.xz
 
 for f in bc*.bc; do