hush: more fixes from trunk; bump version to 1.14.1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/Makefile b/Makefile
index 0d6e17d..e87d18d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 14
-SUBLEVEL = 0
+SUBLEVEL = 1
 EXTRAVERSION =
 NAME = Unnamed
 
diff --git a/scripts/defconfig b/scripts/defconfig
index a863eca..f991363 100644
--- a/scripts/defconfig
+++ b/scripts/defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Busybox version: 1.14.0
-# Wed Apr 15 04:12:17 2009
+# Busybox version: 1.14.1
+# Wed May 27 18:05:31 2009
 #
 CONFIG_HAVE_DOT_CONFIG=y
 
@@ -859,6 +859,7 @@
 CONFIG_HUSH_LOOPS=y
 CONFIG_HUSH_CASE=y
 CONFIG_HUSH_FUNCTIONS=y
+CONFIG_HUSH_EXPORT_N=y
 # CONFIG_LASH is not set
 CONFIG_MSH=y
 
diff --git a/shell/Config.in b/shell/Config.in
index 6cc11ce..57969f0 100644
--- a/shell/Config.in
+++ b/shell/Config.in
@@ -232,6 +232,13 @@
 	help
 	  Enable support for shell functions in hush. +800 bytes.
 
+config HUSH_EXPORT_N
+	bool "Support export '-n' option"
+	default n
+	depends on HUSH
+	help
+	  Enable support for export '-n' option in hush. It is a bash extension.
+
 config LASH
 	bool "lash (deprecated: aliased to hush)"
 	default n
diff --git a/shell/hush.c b/shell/hush.c
index 8c3e7c5..735cb4c 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -50,7 +50,6 @@
  *
  * TODOs:
  *      grep for "TODO" and fix (some of them are easy)
- *      $var refs in function do not pick up values set by "var=val func"
  *      builtins: ulimit
  *      follow IFS rules more precisely, including update semantics
  *
@@ -4110,8 +4109,11 @@
 				}
 #endif
 #if ENABLE_HUSH_FUNCTIONS
-				if (G.flag_return_in_progress == 1)
-					goto check_jobs_and_break;
+				if (G.flag_return_in_progress == 1) {
+					/* same as "goto check_jobs_and_break" */
+					checkjobs(NULL);
+					break;
+				}
 #endif
 			} else if (pi->followup == PIPE_BG) {
 				/* What does bash do with attempts to background builtins? */