Skip to content

Commit

Permalink
Integrate perlio:
Browse files Browse the repository at this point in the history
[  8408]
Remove variables that were used in experiments.

[  8407]
Catch die in %SIG handler and unblock the signal before re-dying.
This make Linux work _without_ sigsetjmp().
Turn off sigsetjmp() to see what else it does.
May need Configure probe for sigprocmask() if anything has sigaction()
but not sigprocmask().

p4raw-link: @8408 on //depot/perlio: e86d18f
p4raw-link: @8407 on //depot/perlio: 1b26641

p4raw-id: //depot/perl@8409
  • Loading branch information
jhi committed Jan 12, 2001
2 parents 075a4a2 + e86d18f commit 645f760
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
19 changes: 18 additions & 1 deletion mg.c
Expand Up @@ -2223,9 +2223,26 @@ Perl_sighandler(int sig)
PUSHs(sv);
PUTBACK;

call_sv((SV*)cv, G_DISCARD);
call_sv((SV*)cv, G_DISCARD|G_EVAL);

POPSTACK;
if (SvTRUE(ERRSV)) {
#ifdef HAS_SIGACTION
/* Handler "died", for example to get out of a restart-able read().
* Before we re-do that on its behalf re-enable the signal which was
* blocked by the system when we entered.
*/
sigset_t set;
sigemptyset(&set);
sigaddset(&set,sig);
sigprocmask(SIG_UNBLOCK, &set, NULL);
#else
/* Not clear if this will work */
(void)rsignal(sig, SIG_IGN);
(void)rsignal(sig, PL_sighandlerp);
#endif
Perl_die(aTHX_ Nullch);
}
cleanup:
if (flags & 1)
PL_savestack_ix -= 8; /* Unprotect save in progress. */
Expand Down
2 changes: 1 addition & 1 deletion scope.h
Expand Up @@ -36,7 +36,7 @@
#define SAVEt_PADSV 35

#ifndef SCOPE_SAVES_SIGNAL_MASK
#define SCOPE_SAVES_SIGNAL_MASK 1
#define SCOPE_SAVES_SIGNAL_MASK 0
#endif

#define SSCHECK(need) if (PL_savestack_ix + need > PL_savestack_max) savestack_grow()
Expand Down

0 comments on commit 645f760

Please sign in to comment.