[perl #124113] Make check for multi-dimensional arrays be UTF8-aware
authorAlex Vandiver <alex@chmrr.net>
Mon, 23 Mar 2015 02:39:23 +0000 (22:39 -0400)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 27 Mar 2015 19:46:40 +0000 (12:46 -0700)
commitb3089e964c0afaf7eb8d54aa5a912e4eb2e6c176
tree45c2ac2a758506389d9499962e78b7765b07f8ad
parentd655d9a2c4d4884d0edf5364a3aafbc8b0b8de38
[perl #124113] Make check for multi-dimensional arrays be UTF8-aware

During parsing, toke.c checks if the user is attempting provide multiple
indexes to an array index:

    $a[ $foo, $bar ];

However, while checking for word characters in variable names is aware
of multi-byte characters if "use utf8" is enabled, the loop is only
advanced one byte at a time, not one character at a time.  As such,
multibyte variables in array indexes incorrectly yield warnings:

    Passing malformed UTF-8 to "XPosixWord" is deprecated
    Malformed UTF-8 character (unexpected continuation byte 0x9d, with
      no preceding start byte)

Switch the loop to advance character-by-character if UTF-8 semantics are
in use.
t/lib/warnings/toke
toke.c