This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
_90 op/tie.t gets "Segmentation fault" with Sarathy's perl_call patch
authorGurusamy Sarathy <gsar@engin.umich.edu>
Tue, 25 Feb 1997 22:00:49 +0000 (17:00 -0500)
committerChip Salzenberg <chip@atlantic.net>
Tue, 25 Feb 1997 01:12:02 +0000 (13:12 +1200)
On Tue, 25 Feb 1997 14:41:30 EST, Chip Salzenberg wrote:
>According to Gurusamy Sarathy:
>> On Tue, 25 Feb 1997 10:07:02 PST, David Dyck wrote:
>> >summary:
>> >  op/tie.t gets "Segmentation fault" with  Sarathy's perl_call patch
>>
>> Try this patch.
>
>That's got it.  Now pureperl doesn't complain about op/tie.t.
>

Good.  This here patch sets up the flag in a few more places (to avoid
redundant sigjmp()s which was why t/op/tie.t triggered execution
of docatch()).  This patch fixes that flag leak.

p5p-msgid: <199702252200.RAA16853@aatma.engin.umich.edu>

perl.c
pp_ctl.c

diff --git a/perl.c b/perl.c
index 9f3942e..8794dd6 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -509,6 +509,7 @@ setuid perl scripts securely.\n");
            calllist(endav);
        return STATUS_NATIVE_EXPORT;
     case 3:
+       mustcatch = FALSE;
        PerlIO_printf(PerlIO_stderr(), "panic: top_env\n");
        return 1;
     }
@@ -800,6 +801,7 @@ PerlInterpreter *sv_interp;
 #endif
        return STATUS_NATIVE_EXPORT;
     case 3:
+       mustcatch = FALSE;
        if (!restartop) {
            PerlIO_printf(PerlIO_stderr(), "panic: restartop\n");
            FREETMPS;
@@ -1030,6 +1032,7 @@ I32 flags;                /* See G_* flags in cop.h */
            my_exit_jump();
            /* NOTREACHED */
        case 3:
+           mustcatch = FALSE;
            if (restartop) {
                op = restartop;
                restartop = 0;
@@ -1140,6 +1143,7 @@ restart:
        my_exit_jump();
        /* NOTREACHED */
     case 3:
+       mustcatch = FALSE;
        if (restartop) {
            op = restartop;
            restartop = 0;
index c2f1361..de3c13b 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1968,6 +1968,7 @@ OP *o;
            PerlIO_printf(PerlIO_stderr(), "panic: restartop\n");
            break;
        }
+       mustcatch = FALSE;
        op = restartop;
        restartop = 0;
        /* FALL THROUGH */