In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/fee9ff27862b4adbfe2630331c0a13155dad90e2?hp=ca53e5d538c69672817c510e43c842c5a2bd2557>

- Log -----------------------------------------------------------------
commit fee9ff27862b4adbfe2630331c0a13155dad90e2
Merge: ca53e5d 6a83a53
Author: Tony Cook <t...@develop-help.com>
Date:   Mon Nov 18 16:44:40 2013 +1100

    [perl #120535] Add UTF8 flag to B::HV->ARRAY keys

commit 6a83a53c49edb3a5ba834feb552a25e8b42a019f
Author: Tony Cook <t...@develop-help.com>
Date:   Mon Nov 18 15:20:16 2013 +1100

    un-TODO the test for 120535, Reini's patch fixes it

M       ext/B/t/b.t

commit fa0789a79059cdefbf7197a9330c0fd6a06011b2
Author: Reini Urban <rur...@x-ray.at>
Date:   Wed Nov 13 13:18:09 2013 -0600

    Add UTF8 flag to keys returned by B::HV->ARRAY
    
    hv_iternextsv() ignores the HEK flags, but we do care about the UTF8 flag
    at least when returning hash keys from B::HV->ARRAY

M       ext/B/B.xs

commit cc54be842f98c857dd862cc0172a4cc56973c027
Author: Tony Cook <t...@develop-help.com>
Date:   Mon Nov 18 15:16:31 2013 +1100

    TODO test for 120535

M       ext/B/t/b.t
-----------------------------------------------------------------------

Summary of changes:
 ext/B/B.xs  | 16 ++++++++++------
 ext/B/t/b.t |  7 +++++++
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/ext/B/B.xs b/ext/B/B.xs
index 0b097d4..1c44857 100644
--- a/ext/B/B.xs
+++ b/ext/B/B.xs
@@ -1952,14 +1952,18 @@ HvARRAY(hv)
        B::HV   hv
     PPCODE:
        if (HvUSEDKEYS(hv) > 0) {
-           SV *sv;
-           char *key;
-           I32 len;
+           HE *he;
            (void)hv_iterinit(hv);
            EXTEND(sp, HvUSEDKEYS(hv) * 2);
-           while ((sv = hv_iternextsv(hv, &key, &len))) {
-               mPUSHp(key, len);
-               PUSHs(make_sv_object(aTHX_ sv));
+           while ((he = hv_iternext(hv))) {
+                if (HeSVKEY(he)) {
+                    mPUSHs(HeSVKEY(he));
+                } else if (HeKUTF8(he)) {
+                    PUSHs(newSVpvn_flags(HeKEY(he), HeKLEN(he), 
SVf_UTF8|SVs_TEMP));
+                } else {
+                    mPUSHp(HeKEY(he), HeKLEN(he));
+                }
+               PUSHs(make_sv_object(aTHX_ HeVAL(he)));
            }
        }
 
diff --git a/ext/B/t/b.t b/ext/B/t/b.t
index cbf9e1f..1fee139 100644
--- a/ext/B/t/b.t
+++ b/ext/B/t/b.t
@@ -415,4 +415,11 @@ EOS
     }
 }
 
+{ # [perl #120535]
+    my %h = ( "\x{100}" => 1 );
+    my $b = B::svref_2object(\%h);
+    my ($k, $v) = $b->ARRAY;
+    is($k, "\x{100}", "check utf8 preserved by B::HV::ARRAY");
+}
+
 done_testing();

--
Perl5 Master Repository

Reply via email to