diff options
author | Nicholas Clark <nick@ccl4.org> | 2007-04-25 09:54:17 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2007-04-25 09:54:17 +0000 |
commit | 16d8f38a2d6ab27610f67c929d18408a3acc29a9 (patch) | |
tree | 8fdfed33308dc5711738fe779105411073ae430a | |
parent | 61cc0970c5d0c4b2204859ac6d67af310deec637 (diff) | |
download | perl-16d8f38a2d6ab27610f67c929d18408a3acc29a9.tar.gz |
Avoid the need for 2 casts added in 31055 by using a better type for
the local variable. Add an assertion that another cast is not a data
loss (and that there is no buffer overflow)
p4raw-id: //depot/perl@31069
-rw-r--r-- | ext/Devel/Peek/Peek.xs | 8 | ||||
-rw-r--r-- | utf8.c | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/ext/Devel/Peek/Peek.xs b/ext/Devel/Peek/Peek.xs index e1c62c3ff5..75023cd8c1 100644 --- a/ext/Devel/Peek/Peek.xs +++ b/ext/Devel/Peek/Peek.xs @@ -344,11 +344,11 @@ PPCODE: SV *pv_lim_sv = perl_get_sv("Devel::Peek::pv_limit", FALSE); const STRLEN pv_lim = pv_lim_sv ? SvIV(pv_lim_sv) : 0; SV *dumpop = perl_get_sv("Devel::Peek::dump_ops", FALSE); - const I32 save_dumpindent = PL_dumpindent; + const U16 save_dumpindent = PL_dumpindent; PL_dumpindent = 2; do_sv_dump(0, Perl_debug_log, sv, 0, lim, (bool)(dumpop && SvTRUE(dumpop)), pv_lim); - PL_dumpindent = (U16)save_dumpindent; + PL_dumpindent = save_dumpindent; } void @@ -360,7 +360,7 @@ PPCODE: SV *pv_lim_sv = perl_get_sv("Devel::Peek::pv_limit", FALSE); const STRLEN pv_lim = pv_lim_sv ? SvIV(pv_lim_sv) : 0; SV *dumpop = perl_get_sv("Devel::Peek::dump_ops", FALSE); - const I32 save_dumpindent = PL_dumpindent; + const U16 save_dumpindent = PL_dumpindent; PL_dumpindent = 2; for (i=1; i<items; i++) { @@ -368,7 +368,7 @@ PPCODE: do_sv_dump(0, Perl_debug_log, ST(i), 0, lim, (bool)(dumpop && SvTRUE(dumpop)), pv_lim); } - PL_dumpindent = (U16)save_dumpindent; + PL_dumpindent = save_dumpindent; } void @@ -1726,6 +1726,7 @@ Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8) } PL_last_swash_hv = hv; + assert(klen <= sizeof(PL_last_swash_key)); PL_last_swash_klen = (U8)klen; /* FIXME change interpvar.h? */ PL_last_swash_tmps = (U8 *) tmps; |