summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1998-05-16 13:45:22 -0400
committerGurusamy Sarathy <gsar@cpan.org>1998-05-21 19:15:02 +0000
commit57ff9a15b1566945fcd54bfbac75501e3ca969c2 (patch)
tree79bf5ebd42a7171413443f1133e953243f7e53ec
parent62520c913c464c89e94916880c0661ff91051cc2 (diff)
downloadperl-57ff9a15b1566945fcd54bfbac75501e3ca969c2.tar.gz
[win32] fix problematic change#965 from maintbranch
Message-Id: <199805162145.RAA02552@monk.mps.ohio-state.edu> Subject: Re: Not OK (after all) : perl 5.00404 +MAINT_TRIAL_3 on sun4-solaris 2.5 p4raw-link: @965 on //depot/maint-5.004/perl: 8472ac73d6d802946d766b5459d2d9c334889a3f p4raw-id: //depot/win32/perl@1023
-rw-r--r--gv.c1
-rw-r--r--op.c2
-rwxr-xr-xt/comp/proto.t12
3 files changed, 13 insertions, 2 deletions
diff --git a/gv.c b/gv.c
index 1ef3b011ec..6ee8d23692 100644
--- a/gv.c
+++ b/gv.c
@@ -111,6 +111,7 @@ gv_init(GV *gv, HV *stash, char *name, STRLEN len, int multi)
if (multi)
GvMULTI_on(gv);
if (doproto) { /* Replicate part of newSUB here. */
+ SvIOK_off(gv);
ENTER;
start_subparse(0,0); /* Create CV in compcv. */
GvCV(gv) = compcv;
diff --git a/op.c b/op.c
index beaac6ace2..d08f2ff91b 100644
--- a/op.c
+++ b/op.c
@@ -3374,7 +3374,7 @@ newSUB(I32 floor, OP *o, OP *proto, OP *block)
else
sv_setiv((SV*)gv, -1);
SvREFCNT_dec(compcv);
- compcv = NULL;
+ cv = compcv = NULL;
sub_generation++;
goto noblock;
}
diff --git a/t/comp/proto.t b/t/comp/proto.t
index 2a4c9ccce5..6a59107ce7 100755
--- a/t/comp/proto.t
+++ b/t/comp/proto.t
@@ -16,7 +16,7 @@ BEGIN {
use strict;
-print "1..80\n";
+print "1..82\n";
my $i = 1;
@@ -403,3 +403,13 @@ sub foo2 ($\%);
eval q{ foo2 "s" };
print "not " unless $@ =~ /^Not enough/;
print "ok ", $i++, "\n";
+
+sub X::foo3;
+*X::foo3 = sub {'ok'};
+print "# $@not " unless eval {X->foo3} eq 'ok';
+print "ok ", $i++, "\n";
+
+sub X::foo4 ($);
+*X::foo4 = sub ($) {'ok'};
+print "not " unless X->foo4 eq 'ok';
+print "ok ", $i++, "\n";