PATCH [perl #72624] charnames::viacode(0) returns undef
authorKarl Williamson <khw@khw-desktop.(none)>
Fri, 16 Apr 2010 04:12:32 +0000 (22:12 -0600)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 17 Aug 2011 01:11:50 +0000 (18:11 -0700)
commit26f2b009aca98a03960ada2abe32b823277c92a9
tree7a4766362bc1ccd3b4e949e9cb9c2ac793c06cf1
parent0a0f98e326d7d6ea73bd0babb03ff364de143650
PATCH [perl #72624] charnames::viacode(0) returns undef

The viacode() function contained the code from the _getcode() function from
Unicode::UCD, unchanged.  However, the rest of viacode() requires that
the result be specially formatted to do a string match with leading
zeros inserted to bring the length up to 4 if less than that.  The
original function only needs to get the number right, as a numerical
comparison is done, so it doesn't do this.  This showed up with calling
viacode with 0, but the bug also affected any input that looked like a
hex number, or a U+ number, such as 'BEE' or 'U+EF'.  These need to be
massaged into '0BEE' and '00EF' for the pattern match later in the
routine to succeed.

The patch also adds a test case to Unicode::UCD to verify that it really
does work ok on 0.
(cherry picked from commit e10d7780a27dcfeb9c50ab28b66f2df8763d8016)
lib/Unicode/UCD.pm
lib/Unicode/UCD.t
lib/charnames.pm
lib/charnames.t