summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/utf8_heavy.pl1
-rw-r--r--utf8.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/utf8_heavy.pl b/lib/utf8_heavy.pl
index bbc082b1e0..fe286d986b 100644
--- a/lib/utf8_heavy.pl
+++ b/lib/utf8_heavy.pl
@@ -159,6 +159,7 @@ sub SWASHNEW {
# NOTE: utf8.c:swash_init() assumes entries are never modified once generated.
sub SWASHGET {
+ # See utf8.c:Perl_swash_fetch for problems with this interface.
my ($self, $start, $len) = @_;
local $^D = 0 if $^D;
my $type = $self->{TYPE};
diff --git a/utf8.c b/utf8.c
index e1a7e631a7..0c094697e7 100644
--- a/utf8.c
+++ b/utf8.c
@@ -1281,6 +1281,12 @@ Perl_swash_init(pTHX_ char* pkg, char* name, SV *listsv, I32 minbits, I32 none)
return retval;
}
+
+/* This API is wrong for special case conversions since we may need to
+ * return several Unicode characters for a single Unicode character
+ * (see lib/unicore/SpecCase.txt) The SWASHGET in lib/utf8_heavy.pl is
+ * the lower-level routine, and it is similarly broken for returning
+ * multiple values. --jhi */
UV
Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr, bool do_utf8)
{