From: Gurusamy Sarathy Message-Id: <199809282109.RAA11724@aatma.engin.umich.edu> Subject: 5.00552: summary "must-apply" patch In-reply-to: Your message of "28 Sep 1998 16:27:53 EDT." Date: Mon, 28 Sep 1998 17:09:47 -0400 On 28 Sep 1998 16:27:53 EDT, Albert Dvornik wrote: >Gurusamy Sarathy writes: >> This is probably due to something that has long bothered me about >> free_tmps(). (SvTEMP()s are subject to get their SvPVX's stolen, >> and that flag hangs around in a non-DEBUGGING perl.) Try this >> patch. > >Good guess: that fixes all of the tests for me. Good, I've attached a patch summarizing fixes for the major problems with 5.005_52. This should be a required patch for anyone testing 5.00552 from here on. VMS-people need run "perl vms/vms_yfix.pl" or apply the patch for change#1897 I sent earlier. The SvTEMP_off() fix should be applicable to both maintenance branches as well. Without it, any SV with REFCNT > 1 can get its value set to '' at arbitrary times. (5.00552 introduced one more opportunity for this to happen, which is why the problem became visible.) - Sarathy. gsar@engin.umich.edu -----------------------------------8<----------------------------------- Change 1899 by gsar@aatma on 1998/09/28 20:46:30 fix various 5.00552 mishaps (fixes suggested by Jan Dubois, Kurt Starsinic, Spider Boardman, Dan Sugalski and Albert Dvornik) Affected files ... ... //depot/perl/hints/irix_6.sh#21 edit ... //depot/perl/lib/ExtUtils/MakeMaker.pm#22 edit ... //depot/perl/mg.c#54 edit ... //depot/perl/scope.c#35 edit Differences ... ==== //depot/perl/hints/irix_6.sh#21 (text) ==== Index: perl/hints/irix_6.sh --- perl/hints/irix_6.sh.~1~ Mon Sep 28 16:58:43 1998 +++ perl/hints/irix_6.sh Mon Sep 28 16:58:43 1998 @@ -219,7 +219,7 @@ uname_r=`uname -r` case "$uname_r" in [1-5]*|6.[01]) - echo >&4 "IRIX $uname_r" does not support 64-bit types." + echo >&4 "IRIX $uname_r does not support 64-bit types." echo >&4 "You should upgrade to at least IRIX 6.2." exit 1 ;; ==== //depot/perl/lib/ExtUtils/MakeMaker.pm#22 (text) ==== Index: perl/lib/ExtUtils/MakeMaker.pm --- perl/lib/ExtUtils/MakeMaker.pm.~1~ Mon Sep 28 16:58:43 1998 +++ perl/lib/ExtUtils/MakeMaker.pm Mon Sep 28 16:58:43 1998 @@ -2,7 +2,7 @@ package ExtUtils::MakeMaker; -$Version = $VERSION = "5.4301"; +$Version = $VERSION = "5.4302"; $Version_OK = "5.17"; # Makefiles older than $Version_OK will die # (Will be checked from MakeMaker version 4.13 onwards) ($Revision = substr(q$Revision: 1.222 $, 10)) =~ s/\s+$//; ==== //depot/perl/mg.c#54 (text) ==== Index: perl/mg.c --- perl/mg.c.~1~ Mon Sep 28 16:58:43 1998 +++ perl/mg.c Mon Sep 28 16:58:43 1998 @@ -94,10 +94,13 @@ */ if (PL_savestack_ix == mgs->mgs_ss_ix) { - assert(SSPOPINT == SAVEt_DESTRUCTOR); + I32 popval = SSPOPINT; + assert(popval == SAVEt_DESTRUCTOR); PL_savestack_ix -= 2; - assert(SSPOPINT == SAVEt_ALLOC); - PL_savestack_ix -= SSPOPINT; + popval = SSPOPINT; + assert(popval == SAVEt_ALLOC); + popval = SSPOPINT; + PL_savestack_ix -= popval; } } ==== //depot/perl/scope.c#35 (text) ==== Index: perl/scope.c --- perl/scope.c.~1~ Mon Sep 28 16:58:43 1998 +++ perl/scope.c Mon Sep 28 16:58:43 1998 @@ -144,9 +144,7 @@ SV* sv = PL_tmps_stack[PL_tmps_ix]; PL_tmps_stack[PL_tmps_ix--] = Nullsv; if (sv) { -#ifdef DEBUGGING SvTEMP_off(sv); -#endif SvREFCNT_dec(sv); /* note, can modify tmps_ix!!! */ } } End of Patch.