From: Timo Sirainen Date: Thu, 1 Oct 2009 20:40:32 +0000 (-0400) Subject: New UnicodeMap.txt has >16bit multi-decomposition keys, support them. X-Git-Tag: 2.0.alpha1~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=576e0be735a03d1fa6e82a120aba03adabdcda66;p=thirdparty%2Fdovecot%2Fcore.git New UnicodeMap.txt has >16bit multi-decomposition keys, support them. --HG-- branch : HEAD --- diff --git a/src/lib/unichar.c b/src/lib/unichar.c index 856614bde4..7a0a95f105 100644 --- a/src/lib/unichar.c +++ b/src/lib/unichar.c @@ -250,7 +250,7 @@ static bool uni_ucs4_decompose_multi_utf8(unichar_t chr, buffer_t *output) if (chr > 0xffff) return FALSE; - if (!uint16_find(multidecomp_keys, N_ELEMENTS(multidecomp_keys), + if (!uint32_find(multidecomp_keys, N_ELEMENTS(multidecomp_keys), chr, &idx)) return FALSE; diff --git a/src/lib/unicodemap.pl b/src/lib/unicodemap.pl index 35f91bbe71..2918de4c34 100755 --- a/src/lib/unicodemap.pl +++ b/src/lib/unicodemap.pl @@ -32,7 +32,7 @@ while (<>) { # unicharacter decomposition. use separate lists for this my $value = eval("0x$1"); if ($value > 0xffff) { - print STDERR "We've assumed decomposition codes are max. 16bit\n"; + print STDERR "Error: We've assumed decomposition codes are max. 16bit\n"; exit; } if ($code <= 0xffff) { @@ -44,8 +44,8 @@ while (<>) { } } else { # multicharacter decomposition. - if ($code > 0xffff) { - print STDERR "We've assumed multi-decomposition key codes are max. 16bit\n"; + if ($code > 0xffffffff) { + print STDERR "Error: We've assumed multi-decomposition key codes are max. 32bit\n"; exit; } @@ -55,7 +55,7 @@ while (<>) { foreach my $dcode (split(" ", $decomp_codes)) { my $value = eval("0x$dcode"); if ($value > 0xffff) { - print STDERR "We've assumed decomposition codes are max. 16bit\n"; + print STDERR "Error: We've assumed decomposition codes are max. 16bit\n"; exit; } push @multidecomp_values, $value; @@ -121,7 +121,7 @@ print "static const uint16_t uni32_decomp_values[] = {\n\t"; print_list(\@uni32_decomp_values); print "\n};\n"; -print "static const uint16_t multidecomp_keys[] = {\n\t"; +print "static const uint32_t multidecomp_keys[] = {\n\t"; print_list(\@multidecomp_keys); print "\n};\n";