From 4e6797b08bfe25a89af13cfe7ca60bf4e1551a7b Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 8 Jul 2011 16:41:24 +0800 Subject: [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 Signed-off-by: Herbert Xu --- ChangeLog | 4 ++++ src/eval.c | 4 ++-- 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 + + * Avoid using undefined handler. + 2011-05-23 Jim Meyering * 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++; -- cgit 1.4.1