diff options
| author | Peter Stephenson <pws@users.sourceforge.net> | 2010-09-12 18:56:40 +0000 |
|---|---|---|
| committer | Peter Stephenson <pws@users.sourceforge.net> | 2010-09-12 18:56:40 +0000 |
| commit | ade705cf5b36cdaad29ec7e21796adc3a0854f2c (patch) | |
| tree | 1be48025d7b94a02a9928ab010ba5d490e2bd5fc /Src/signals.c | |
| parent | unposted: safety on regexp errors in replace-string-again (diff) | |
| download | zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.tar zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.tar.gz zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.tar.bz2 zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.tar.lz zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.tar.xz zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.tar.zst zsh-ade705cf5b36cdaad29ec7e21796adc3a0854f2c.zip | |
28253: document -h argument to atribute commands
Diffstat (limited to 'Src/signals.c')
| -rw-r--r-- | Src/signals.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Src/signals.c b/Src/signals.c index 49e5e6379..d107b46d1 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -864,7 +864,8 @@ removetrap(int sig) * one, to aid in removing this one. However, if there's * already one at the current locallevel we just overwrite it. */ - if (!dontsavetrap && (isset(LOCALTRAPS) || sig == SIGEXIT) && + if (!dontsavetrap && + (sig == SIGEXIT ? !isset(POSIXTRAPS) : isset(LOCALTRAPS)) && locallevel && (!trapped || locallevel > (sigtrapped[sig] >> ZSIG_SHIFT))) dosavetrap(sig, locallevel); @@ -932,7 +933,7 @@ starttrapscope(void) * so give it the next higher one. dosavetrap() is called * automatically where necessary. */ - if (sigtrapped[SIGEXIT]) { + if (sigtrapped[SIGEXIT] && !isset(POSIXTRAPS)) { locallevel++; unsettrap(SIGEXIT); locallevel--; @@ -960,7 +961,7 @@ endtrapscope(void) */ if (intrap) exittr = 0; - else if ((exittr = sigtrapped[SIGEXIT])) { + else if (!isset(POSIXTRAPS) && (exittr = sigtrapped[SIGEXIT])) { if (exittr & ZSIG_FUNC) { exitfn = removehashnode(shfunctab, "TRAPEXIT"); } else { @@ -1005,7 +1006,8 @@ endtrapscope(void) } if (exittr) { - dotrapargs(SIGEXIT, &exittr, exitfn); + if (!isset(POSIXTRAPS)) + dotrapargs(SIGEXIT, &exittr, exitfn); if (exittr & ZSIG_FUNC) shfunctab->freenode((HashNode)exitfn); else |
