diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1998-02-14 01:00:15 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-02-14 01:00:15 +0000 |
commit | 9e67d94e6e4396a78a2012441f9359240f5b4bdd (patch) | |
tree | fc1c6466e151f0e066a87df256b70d1b8cc35a91 /scope.c | |
parent | 9d8a25dc64d23dcd5730db9be0dbe94a107e1f8b (diff) | |
parent | b17fe6e572cf341e620c89fc18fb670ef7f916a6 (diff) | |
download | perl-9e67d94e6e4396a78a2012441f9359240f5b4bdd.tar.gz |
[asperl] bring ASPerl uptodate with mainline changes
p4raw-id: //depot/asperl@524
Diffstat (limited to 'scope.c')
-rw-r--r-- | scope.c | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -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: |