summary refs log tree commit diff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2011-07-08 16:41:24 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2011-07-08 16:41:24 +0800
commit4e6797b08bfe25a89af13cfe7ca60bf4e1551a7b (patch)
treeed8fdc5ff4e5aa339b55f496785079282a2732b8
parent[MEMALLOC] Avoid clang warning about dead store to "size" (diff)
downloaddash-4e6797b08bfe25a89af13cfe7ca60bf4e1551a7b.tar.gz
dash-4e6797b08bfe25a89af13cfe7ca60bf4e1551a7b.zip
[EVAL] Avoid using undefined handler
* src/eval.c (evalbltin, evalfun): Set savehandler before calling
setjmp with the possible "goto *done", where savehandler is used.
Otherwise, clang warns that "Assigned value is garbage or undefined"
at the point where "savehandler" is used on the RHS.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--ChangeLog4
-rw-r--r--src/eval.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 768374a..70bce7e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@
 	* Optimize dash -c "command" to avoid a fork.
 	* Eliminate unnecessary promotion in echocmd.
 
+2011-05-25  Jim Meyering  <meyering@redhat.com>
+
+	* Avoid using undefined handler.
+
 2011-05-23  Jim Meyering  <meyering@redhat.com>
 
 	* Avoid gcc warning: variable 'oldstackp' set but not used.
diff --git a/src/eval.c b/src/eval.c
index 6e7b932..95d30f4 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -897,9 +897,9 @@ evalbltin(const struct builtincmd *cmd, int argc, char **argv, int flags)
 	int i;
 
 	savecmdname = commandname;
+	savehandler = handler;
 	if ((i = setjmp(jmploc.loc)))
 		goto cmddone;
-	savehandler = handler;
 	handler = &jmploc;
 	commandname = argv[0];
 	argptr = argv + 1;
@@ -930,11 +930,11 @@ evalfun(struct funcnode *func, int argc, char **argv, int flags)
 
 	saveparam = shellparam;
 	savefuncline = funcline;
+	savehandler = handler;
 	if ((e = setjmp(jmploc.loc))) {
 		goto funcdone;
 	}
 	INTOFF;
-	savehandler = handler;
 	handler = &jmploc;
 	shellparam.malloc = 0;
 	func->count++;