This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
APItest/t/utf8.t: Fix failing EBCDIC tests
authorKarl Williamson <khw@cpan.org>
Thu, 17 Nov 2016 03:18:59 +0000 (20:18 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 17 Nov 2016 09:51:05 +0000 (02:51 -0700)
I keep not getting this completely correct, hence
1069c57cb1f4e6b94f8695843243749e9511303e
162256f303e3b2f3936976e692650c18c9cad0a6

But I'm hopeful this is the final answer.  We should be operating on I8
strings in this function, translating into I8 at the beginning and
translating  back to UTF-EBCDIC at the end (except UTF8SKIP has
purposely been built for speed to not use the transform, so it operates
on UTF-EBCDIC.

ext/XS-APItest/t/utf8.t

index 291321e..49a6fba 100644 (file)
@@ -80,8 +80,8 @@ sub start_byte_to_cont($) {
     # Copied from utf8.h.  This gets rid of the leading 1 bits.
     $byte &= ((($len) >= 7) ? 0x00 : (0x1F >> (($len)-2)));
 
     # Copied from utf8.h.  This gets rid of the leading 1 bits.
     $byte &= ((($len) >= 7) ? 0x00 : (0x1F >> (($len)-2)));
 
-    $byte |= (isASCII) ? 0x80 : ord I8_to_native("\xA0");
-    return chr $byte;
+    $byte |= (isASCII) ? 0x80 : 0xA0;
+    return I8_to_native(chr $byte);
 }
 
 my $is64bit = length sprintf("%x", ~0) > 8;
 }
 
 my $is64bit = length sprintf("%x", ~0) > 8;