This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate:
authorJarkko Hietaniemi <jhi@iki.fi>
Fri, 8 Aug 2003 19:51:22 +0000 (19:51 +0000)
committerJarkko Hietaniemi <jhi@iki.fi>
Fri, 8 Aug 2003 19:51:22 +0000 (19:51 +0000)
[ 20563]
Subject: [PATCH] maintperl & bleadperl for Cygwin: include libgdbm_compat & libcygipc in searchlist
From: "Gerrit P. Haase" <gp@familiehaase.de>
Date: Fri, 8 Aug 2003 13:44:51 +0200
Message-ID: <1621817486657.20030808134451@familiehaase.de>

[ 20564]
Subject: [PATCH] Re: main@20537: WinXP build failed op/time.t test 2
From: Steve Hay <steve.hay@uk.radan.com>
Date: Fri, 08 Aug 2003 12:42:28 +0100
Message-ID: <3F338CA4.3010503@uk.radan.com>

[ 20565]
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).

[ 20566]
Subject: UNICODE regexp bug
From: Nick Ing-Simmons <nick@ing-simmons.net>
Date: Fri, 08 Aug 2003 20:36:56 +0100
Message-Id: <20030808193656.5109.1@llama.ni-s.u-net.com>
p4raw-link: @20566 on //depot/perl: c1e0e3d213c8ff11e0eeef6aecef3894e8ec6e96
p4raw-link: @20565 on //depot/perl: 5c1546dc48d585e2ab2e244b01f0213280b12017
p4raw-link: @20564 on //depot/perl: ab2f3c4a71e82c5e73898a746d576abd20c32de8
p4raw-link: @20563 on //depot/perl: 0016644b4ef8e92272036e52ec534c50ed8924c6

p4raw-id: //depot/maint-5.8/perl@20567
p4raw-integrated: from //depot/perl@20562 'copy in'
ext/NDBM_File/hints/cygwin.pl ext/ODBM_File/hints/cygwin.pl
(@4769..) t/op/time.t (@11838..) hints/cygwin.sh (@16291..)
ext/POSIX/POSIX.xs (@20081..) 'merge in' mg.c (@20068..)
embedvar.h perlapi.h perlvars.h (@20263..) t/op/pat.t
(@20405..) regexec.c (@20538..)

embedvar.h
ext/NDBM_File/hints/cygwin.pl
ext/ODBM_File/hints/cygwin.pl
ext/POSIX/POSIX.xs
hints/cygwin.sh
mg.c
perlapi.h
perlvars.h
regexec.c
t/op/pat.t
t/op/time.t

index d5a2cc2..252d6d5 100644 (file)
 
 #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)
 
 #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
index 0a4b762..3b8eea0 100644 (file)
@@ -1,2 +1,2 @@
 # uses GDBM ndbm compatibility feature
-$self->{LIBS} = ['-lgdbm'];
+$self->{LIBS} = ['-lgdbm -lgdbm_compat'];
index a0d33c8..5762d44 100644 (file)
@@ -1,2 +1,2 @@
 # uses GDBM dbm compatibility feature
-$self->{LIBS} = ['-lgdbm'];
+$self->{LIBS} = ['-lgdbm -lgdbm_compat'];
index 3798152..10ba175 100644 (file)
@@ -1293,7 +1293,7 @@ sigaction(sig, optaction, oldaction = 0)
 
                /* 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) {
index e88cab7..32d0326 100644 (file)
@@ -23,6 +23,8 @@ so='dll'
 libswanted=`echo " $libswanted " | sed -e 's/ c / /g'`
 # - eliminate -lm, symlink to libcygwin.a
 libswanted=`echo " $libswanted " | sed -e 's/ m / /g'`
+# - add libgdbm_compat & libcygipc to $libswanted
+libswanted="$libswanted gdbm_compat cygipc"
 test -z "$optimize" && optimize='-O2'
 ccflags="$ccflags -DPERL_USE_SAFE_PUTENV"
 # - otherwise i686-cygwin
diff --git a/mg.c b/mg.c
index c0fc536..015f405 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -1137,7 +1137,7 @@ Perl_magic_clearsig(pTHX_ SV *sv, MAGIC *mg)
 #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
@@ -1176,7 +1176,7 @@ Perl_csighandler(int sig)
     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
@@ -1206,7 +1206,7 @@ Perl_csighandler_init(void)
 #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;
@@ -1299,7 +1299,7 @@ Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
     }
     if (SvTYPE(sv) == SVt_PVGV || SvROK(sv)) {
        if (i) {
-           (void)rsignal(i, &Perl_csighandler);
+           (void)rsignal(i, PL_csighandlerp);
 #ifdef HAS_SIGPROCMASK
            LEAVE;
 #endif
@@ -1315,7 +1315,7 @@ Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
        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
@@ -1326,7 +1326,7 @@ Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
 #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);
@@ -1341,7 +1341,7 @@ Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
        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);
     }
@@ -2549,7 +2549,7 @@ Perl_sighandler(int sig)
 #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);
index ab4e2a3..242b16e 100644 (file)
--- a/perlapi.h
+++ b/perlapi.h
@@ -988,6 +988,8 @@ END_EXTERN_C
 #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
index e0b65be..6ea1cb8 100644 (file)
@@ -63,3 +63,5 @@ PERLVAR(Gsigfpe_saved,        Sighandler_t)
  * The contents are never used, only the address. */
 PERLVAR(Gsv_placeholder, SV)
 
+PERLVARI(Gcsighandlerp,        Sighandler_t, &Perl_csighandler)        /* Pointer to C-level sighandler */
+
index fafc72e..5cae8b2 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -1034,7 +1034,9 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *sta
            c1 = *(U8*)m;
            c2 = PL_fold_locale[c1];
          do_exactf:
-           e = HOP3c(strend, -(I32)ln, s);
+           /* The last byte to try is ln-1 characters before strend
+            * since the strend points one byte past the string. */
+           e = HOP3c(strend, (I32)1 - (I32)ln, s);
 
            if (norun && e < s)
                e = s;                  /* Due to minlen logic of intuit() */
index d970f8f..69b47b8 100755 (executable)
@@ -6,7 +6,7 @@
 
 $| = 1;
 
-print "1..1008\n";
+print "1..1009\n";
 
 BEGIN {
     chdir 't' if -d 't';
@@ -3189,5 +3189,8 @@ ok("abcde" eq "$`", '# TODO #19049 - global match not setting $`');
 
 ok("123\x{100}" =~ /^.*1.*23\x{100}$/, 'uft8 + multiple floating substr');
 
+ok("  \x{101}" =~ qr/\x{100}/i,
+   "<20030808193656.5109.1@llama.ni-s.u-net.com>");
+
 # last test 1008
 
index 870a8dc..2de3a03 100755 (executable)
@@ -34,7 +34,7 @@ ok($now > $beg && $now - $beg < 10,             'very basic time test');
 
 for ($i = 0; $i < 100000; $i++) {
     ($nowuser, $nowsys) = times;
-    $i = 200000 if $nowuser > $beguser && ( $nowsys > $begsys || 
+    $i = 200000 if $nowuser > $beguser && ( $nowsys >= $begsys || 
                                             (!$nowsys && !$begsys));
     last if time - $beg > 20;
 }