handy.h: Fix isIDCONT_utf8()
authorKarl Williamson <public@khwilliamson.com>
Mon, 14 Jan 2013 19:12:50 +0000 (12:12 -0700)
committerKarl Williamson <public@khwilliamson.com>
Mon, 14 Jan 2013 19:29:15 +0000 (12:29 -0700)
It was handling above-Latin1 code points as IDstarts instead of
continues.

ext/XS-APItest/t/handy.t
handy.h

index 0730c10..5ecbaa7 100644 (file)
@@ -77,6 +77,10 @@ foreach my $name (sort keys %properties) {
     # This makes sure we are using the Perl definition of idfirst and idcont,
     # and not the Unicode.  There are a few differences.
     push @code_points, ord "\N{ESTIMATED SYMBOL}" if $name =~ /^id(first|cont)/;
+    if ($name eq "idcont") {    # And some that are continuation but not start
+        push @code_points, ord("\N{GREEK ANO TELEIA}"),
+                           ord("\N{COMBINING GRAVE ACCENT}");
+    }
 
     # And finally one non-Unicode code point.
     push @code_points, 0x110000;    # Above Unicode, no prop should match
diff --git a/handy.h b/handy.h
index 1beca9b..298383e 100644 (file)
--- a/handy.h
+++ b/handy.h
@@ -1268,7 +1268,7 @@ EXTCONST U32 PL_charclass[];
                                                   _is_utf8_FOO(_CC_DIGIT, p))
 #define isGRAPH_utf8(p)         _generic_swash_utf8(_CC_GRAPH, p)
 #define isIDCONT_utf8(p)        _generic_func_utf8(_CC_WORDCHAR,              \
-                                                  _is_utf8_perl_idstart, p)
+                                                  _is_utf8_perl_idcont, p)
 
 /* To prevent S_scan_word in toke.c from hanging, we have to make sure that
  * IDFIRST is an alnum.  See