]> granicus.if.org Git - icu/commitdiff
ICU-9235 getToUnicodeValue() should write extension seq length as count of UTF16...
authorPeter Edberg <pedberg@unicode.org>
Thu, 14 Jun 2012 22:19:36 +0000 (22:19 +0000)
committerPeter Edberg <pedberg@unicode.org>
Thu, 14 Jun 2012 22:19:36 +0000 (22:19 +0000)
X-SVN-Rev: 31954

icu4c/source/test/testdata/conversion.txt
icu4c/source/tools/makeconv/gencnvex.c

index 99bd32b49547a2dc651889c6e71c530168832c1c..f1c4cfed7350ce1fbf96f7482edf7f0dbfde0265 100644 (file)
@@ -695,6 +695,15 @@ conversion:table(nofallback) {
           :int{1}, :int{0}, "", "?", :bin{""}
         }
 
+        // test mapping to sequence of multiple Unicode characters which includes nonBMP (ticket #9235)
+        {
+          "*test3",
+          :bin{ 05070001020e050501020c06 },
+          "\x05\U00101234\U00050005\u00c4\u00c4\U00101234\x05\x06",
+          :intvector{ 0, 1, 1, 1, 1, 7, 7, 7, 7, 7, 11 },
+          :int{1}, :int{0}, "", "?", :bin{""}
+        }
+
         // normal conversions
         {
           "UTF-16LE",
index 2ad5e518b51d08e68ed3d3c27c2ae44efac8b21f..3b97e0c9b51c10bb1c624b71a0996b5975cbbbc1 100644 (file)
@@ -350,7 +350,7 @@ getToUnicodeValue(CnvExtData *extData, UCMTable *table, UCMapping *m) {
 
         /* allocate it and put its length and index into the value */
         value=
-            (((uint32_t)m->uLen+UCNV_EXT_TO_U_LENGTH_OFFSET)<<UCNV_EXT_TO_U_LENGTH_SHIFT)|
+            (((uint32_t)u16Length+UCNV_EXT_TO_U_LENGTH_OFFSET)<<UCNV_EXT_TO_U_LENGTH_SHIFT)|
             ((uint32_t)utm_countItems(extData->toUUChars));
         u=utm_allocN(extData->toUUChars, u16Length);