This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Move TidyType() to Utilities::tidy_type()
[perl5.git] / doop.c
diff --git a/doop.c b/doop.c
index 717ee66..c11555f 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -741,6 +741,14 @@ Perl_do_sprintf(pTHX_ SV *sv, I32 len, SV **sarg)
 
     PERL_ARGS_ASSERT_DO_SPRINTF;
 
+    if (SvTAINTED(*sarg))
+       TAINT_PROPER(
+               (PL_op && PL_op->op_type < OP_max)
+                   ? (PL_op->op_type == OP_PRTF)
+                       ? "printf"
+                       : PL_op_name[PL_op->op_type]
+                   : "(unknown)"
+       );
     SvUTF8_off(sv);
     if (DO_UTF8(*sarg))
         SvUTF8_on(sv);
@@ -1254,7 +1262,7 @@ Perl_do_kv(pTHX)
            dTARGET;
 
            if (! SvTIED_mg((const SV *)keys, PERL_MAGIC_tied) ) {
-               i = HvKEYS(keys);
+               i = HvUSEDKEYS(keys);
            }
            else {
                i = 0;
@@ -1265,7 +1273,7 @@ Perl_do_kv(pTHX)
        RETURN;
     }
 
-    EXTEND(SP, HvKEYS(keys) * (dokeys + dovalues));
+    EXTEND(SP, HvUSEDKEYS(keys) * (dokeys + dovalues));
 
     PUTBACK;   /* hv_iternext and hv_iterval might clobber stack_sp */
     while ((entry = hv_iternext(keys))) {