summaryrefslogtreecommitdiff
path: root/scope.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1998-02-14 01:00:15 +0000
committerGurusamy Sarathy <gsar@cpan.org>1998-02-14 01:00:15 +0000
commit9e67d94e6e4396a78a2012441f9359240f5b4bdd (patch)
treefc1c6466e151f0e066a87df256b70d1b8cc35a91 /scope.c
parent9d8a25dc64d23dcd5730db9be0dbe94a107e1f8b (diff)
parentb17fe6e572cf341e620c89fc18fb670ef7f916a6 (diff)
downloadperl-9e67d94e6e4396a78a2012441f9359240f5b4bdd.tar.gz
[asperl] bring ASPerl uptodate with mainline changes
p4raw-id: //depot/asperl@524
Diffstat (limited to 'scope.c')
-rw-r--r--scope.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/scope.c b/scope.c
index 962d63ab42..56387e8b13 100644
--- a/scope.c
+++ b/scope.c
@@ -258,12 +258,11 @@ void
save_item(register SV *item)
{
dTHR;
- register SV *sv;
+ register SV *sv = NEWSV(0,0);
+ sv_setsv(sv,item);
SSCHECK(3);
SSPUSHPTR(item); /* remember the pointer */
- sv = NEWSV(0,0);
- sv_setsv(sv,item);
SSPUSHPTR(sv); /* remember the value */
SSPUSHINT(SAVEt_ITEM);
}
@@ -440,11 +439,11 @@ save_list(register SV **sarg, I32 maxsarg)
register SV *sv;
register I32 i;
- SSCHECK(3 * maxsarg);
for (i = 1; i <= maxsarg; i++) {
- SSPUSHPTR(sarg[i]); /* remember the pointer */
sv = NEWSV(0,0);
sv_setsv(sv,sarg[i]);
+ SSCHECK(3);
+ SSPUSHPTR(sarg[i]); /* remember the pointer */
SSPUSHPTR(sv); /* remember the value */
SSPUSHINT(SAVEt_ITEM);
}
@@ -611,14 +610,14 @@ leave_scope(I32 base)
case SAVEt_GP: /* scalar reference */
ptr = SSPOPPTR;
gv = (GV*)SSPOPPTR;
- gp_free(gv);
- GvGP(gv) = (GP*)ptr;
if (SvPOK(gv) && SvLEN(gv) > 0) {
Safefree(SvPVX(gv));
}
SvPVX(gv) = (char *)SSPOPPTR;
SvCUR(gv) = (STRLEN)SSPOPIV;
SvLEN(gv) = (STRLEN)SSPOPIV;
+ gp_free(gv);
+ GvGP(gv) = (GP*)ptr;
SvREFCNT_dec(gv);
break;
case SAVEt_FREESV: