]> git.saurik.com Git - apple/shell_cmds.git/blobdiff - sh/trap.c
shell_cmds-203.tar.gz
[apple/shell_cmds.git] / sh / trap.c
index b90fee8f3d0698db0b0e1abb59cc5d74aa0feb94..7a969ed623d209b7d3a76a0270db13201ad8ac49 100644 (file)
--- a/sh/trap.c
+++ b/sh/trap.c
@@ -36,7 +36,7 @@ static char sccsid[] = "@(#)trap.c    8.5 (Berkeley) 6/5/95";
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/bin/sh/trap.c 297360 2016-03-28 18:58:40Z jilles $");
 
 #include <signal.h>
 #include <unistd.h>
@@ -415,6 +415,7 @@ onsig(int signo)
 void
 dotrap(void)
 {
+       struct stackmark smark;
        int i;
        int savestatus, prev_evalskip, prev_skipcount;
 
@@ -448,7 +449,9 @@ dotrap(void)
 
                                        last_trapsig = i;
                                        savestatus = exitstatus;
-                                       evalstring(trap[i], 0);
+                                       setstackmark(&smark);
+                                       evalstring(stsavestr(trap[i]), 0);
+                                       popstackmark(&smark);
 
                                        /*
                                         * If such a command was not