summaryrefslogtreecommitdiff
path: root/scope.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-02-20 18:54:58 +0000
committerNicholas Clark <nick@ccl4.org>2010-05-04 18:58:18 +0100
commitc9441fce959a578649990e314e4e5d491aa4b319 (patch)
tree289979e1991b85b13f254eab99507e431d16f78b /scope.c
parent72ecaef9b6534b55c9387725446d2c87621d5cbf (diff)
downloadperl-c9441fce959a578649990e314e4e5d491aa4b319.tar.gz
For SAVEt_I16, save the value with the type.
Diffstat (limited to 'scope.c')
-rw-r--r--scope.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/scope.c b/scope.c
index 9f9da423bb..57c00b697f 100644
--- a/scope.c
+++ b/scope.c
@@ -417,7 +417,9 @@ Perl_save_I16(pTHX_ I16 *intp)
PERL_ARGS_ASSERT_SAVE_I16;
- save_pushi32ptr(*intp, intp, SAVEt_I16);
+ SSCHECK(2);
+ SSPUSHPTR(intp);
+ SSPUSHUV(SAVEt_I16 | ((UV)*intp << 8));
}
void
@@ -1086,7 +1088,7 @@ Perl_leave_scope(pTHX_ I32 base)
case SAVEt_I16: /* I16 reference */
ptr = SSPOPPTR;
- *(I16*)ptr = (I16)SSPOPINT;
+ *(I16*)ptr = (I16)(uv >> 8);
break;
case SAVEt_I8: /* I8 reference */
ptr = SSPOPPTR;