Change 20565 by [EMAIL PROTECTED] on 2003/08/08 18:59:40

        Move the csighandler to be a data variable so that
        things like DLL trampolines can't mess up the code
        variables the Perl_csighandler (seen in Cygwin:
        Perl_csighandler in POSIX extension was different
        than in main executable).

Affected files ...

... //depot/perl/embedvar.h#180 edit
... //depot/perl/ext/POSIX/POSIX.xs#116 edit
... //depot/perl/mg.c#272 edit
... //depot/perl/perlapi.h#102 edit
... //depot/perl/perlvars.h#57 edit

Differences ...

==== //depot/perl/embedvar.h#180 (text+w) ====
Index: perl/embedvar.h
--- perl/embedvar.h#179~20263~  Mon Jul 28 05:13:24 2003
+++ perl/embedvar.h     Fri Aug  8 11:59:40 2003
@@ -896,6 +896,7 @@
 
 #define PL_No                  (PL_Vars.GNo)
 #define PL_Yes                 (PL_Vars.GYes)
+#define PL_csighandlerp                (PL_Vars.Gcsighandlerp)
 #define PL_curinterp           (PL_Vars.Gcurinterp)
 #define PL_do_undump           (PL_Vars.Gdo_undump)
 #define PL_dollarzero_mutex    (PL_Vars.Gdollarzero_mutex)
@@ -912,6 +913,7 @@
 
 #define PL_GNo                 PL_No
 #define PL_GYes                        PL_Yes
+#define PL_Gcsighandlerp       PL_csighandlerp
 #define PL_Gcurinterp          PL_curinterp
 #define PL_Gdo_undump          PL_do_undump
 #define PL_Gdollarzero_mutex   PL_dollarzero_mutex

==== //depot/perl/ext/POSIX/POSIX.xs#116 (text) ====
Index: perl/ext/POSIX/POSIX.xs
--- perl/ext/POSIX/POSIX.xs#115~20081~  Tue Jul  8 22:53:56 2003
+++ perl/ext/POSIX/POSIX.xs     Fri Aug  8 11:59:40 2003
@@ -1293,7 +1293,7 @@
 
                /* Get back whether the old handler used safe signals. */
                svp = hv_fetch(oldaction, "SAFE", 4, TRUE);
-               sv_setiv(*svp, oact.sa_handler == Perl_csighandler);
+               sv_setiv(*svp, oact.sa_handler == PL_csighandlerp);
            }
 
            if (action) {

==== //depot/perl/mg.c#272 (text) ====
Index: perl/mg.c
--- perl/mg.c#271~20068~        Tue Jul  8 01:36:27 2003
+++ perl/mg.c   Fri Aug  8 11:59:40 2003
@@ -1144,7 +1144,7 @@
 #endif
 #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS
            sig_defaulting[i] = 1;
-           (void)rsignal(i, &Perl_csighandler);
+           (void)rsignal(i, PL_csighandlerp);
 #else
            (void)rsignal(i, SIG_DFL);
 #endif
@@ -1183,7 +1183,7 @@
     dTHX;
 #endif
 #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
-    (void) rsignal(sig, &Perl_csighandler);
+    (void) rsignal(sig, PL_csighandlerp);
     if (sig_ignoring[sig]) return;
 #endif
 #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS
@@ -1213,7 +1213,7 @@
 #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS
         dTHX;
         sig_defaulting[sig] = 1;
-        (void) rsignal(sig, &Perl_csighandler);
+        (void) rsignal(sig, PL_csighandlerp);
 #endif
 #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
         sig_ignoring[sig] = 0;
@@ -1306,7 +1306,7 @@
     }
     if (SvTYPE(sv) == SVt_PVGV || SvROK(sv)) {
        if (i) {
-           (void)rsignal(i, &Perl_csighandler);
+           (void)rsignal(i, PL_csighandlerp);
 #ifdef HAS_SIGPROCMASK
            LEAVE;
 #endif
@@ -1322,7 +1322,7 @@
        if (i) {
 #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
            sig_ignoring[i] = 1;
-           (void)rsignal(i, &Perl_csighandler);
+           (void)rsignal(i, PL_csighandlerp);
 #else
            (void)rsignal(i, SIG_IGN);
 #endif
@@ -1333,7 +1333,7 @@
 #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS
          {
            sig_defaulting[i] = 1;
-           (void)rsignal(i, &Perl_csighandler);
+           (void)rsignal(i, PL_csighandlerp);
          }
 #else
            (void)rsignal(i, SIG_DFL);
@@ -1348,7 +1348,7 @@
        if (!strchr(s,':') && !strchr(s,'\''))
            sv_insert(sv, 0, 0, "main::", 6);
        if (i)
-           (void)rsignal(i, &Perl_csighandler);
+           (void)rsignal(i, PL_csighandlerp);
        else
            *svp = SvREFCNT_inc(sv);
     }
@@ -2518,7 +2518,7 @@
 #else
        /* Not clear if this will work */
        (void)rsignal(sig, SIG_IGN);
-       (void)rsignal(sig, &Perl_csighandler);
+       (void)rsignal(sig, PL_csighandlerp);
 #endif
 #endif /* !PERL_MICRO */
        Perl_die(aTHX_ Nullformat);

==== //depot/perl/perlapi.h#102 (text+w) ====
Index: perl/perlapi.h
--- perl/perlapi.h#101~20263~   Mon Jul 28 05:13:24 2003
+++ perl/perlapi.h      Fri Aug  8 11:59:40 2003
@@ -930,6 +930,8 @@
 #define PL_No                  (*Perl_GNo_ptr(NULL))
 #undef  PL_Yes
 #define PL_Yes                 (*Perl_GYes_ptr(NULL))
+#undef  PL_csighandlerp
+#define PL_csighandlerp                (*Perl_Gcsighandlerp_ptr(NULL))
 #undef  PL_curinterp
 #define PL_curinterp           (*Perl_Gcurinterp_ptr(NULL))
 #undef  PL_do_undump

==== //depot/perl/perlvars.h#57 (text) ====
Index: perl/perlvars.h
--- perl/perlvars.h#56~20263~   Mon Jul 28 05:13:24 2003
+++ perl/perlvars.h     Fri Aug  8 11:59:40 2003
@@ -63,3 +63,5 @@
  * The contents are never used, only the address. */
 PERLVAR(Gsv_placeholder, SV)
 
+PERLVARI(Gcsighandlerp,        Sighandler_t, &Perl_csighandler)        /* Pointer to 
C-level sighandler */
+
End of Patch.

Reply via email to