diff options
author | jshin@chromium.org <jshin@chromium.org> | 2014-11-26 18:31:18 +0000 |
---|---|---|
committer | jshin@chromium.org <jshin@chromium.org> | 2014-11-26 18:31:18 +0000 |
commit | 866ff696e9022a6000afbab516fba62cfa306075 (patch) | |
tree | 4d552cd212ce1880b4a205c0ad6475fd4b9b1fd2 /patches | |
parent | dd727641e190d60e4593bcb3a35c7f51eb4925c5 (diff) | |
download | icu-866ff696e9022a6000afbab516fba62cfa306075.tar.gz |
Apply a local patch to ucol.cpp
BUG=433866
TEST=See the bug.
R=mbarbella@google.com
Review URL: https://codereview.chromium.org/751333003
git-svn-id: http://src.chromium.org/svn/trunk/deps/third_party/icu52@293126 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Diffstat (limited to 'patches')
-rw-r--r-- | patches/col.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/patches/col.patch b/patches/col.patch new file mode 100644 index 0000000..aa117fe --- /dev/null +++ b/patches/col.patch @@ -0,0 +1,29 @@ +Index: source/i18n/ucol.cpp +=================================================================== +--- source/i18n/ucol.cpp (revision 292709) ++++ source/i18n/ucol.cpp (working copy) +@@ -2259,6 +2259,9 @@ + if (data->pos + 1 == data->endp) { + return *(data->pos ++); + } ++ if (data->pos >= data->endp) { ++ return (UChar) -1; // return U+FFFF (non-char) to indicate an error ++ } + } + else { + if (innormbuf) { +@@ -2821,7 +2824,13 @@ + } + } + } else if (U16_IS_LEAD(schar)) { +- miss = U16_GET_SUPPLEMENTARY(schar, getNextNormalizedChar(source)); ++ UChar nextChar = getNextNormalizedChar(source); ++ const UChar* prevPos = source->pos; ++ if (U16_IS_TRAIL(nextChar)) { ++ miss = U16_GET_SUPPLEMENTARY(schar, nextChar); ++ } else if (prevPos < source->pos) { ++ goBackOne(source); ++ } + } + + uint8_t sCC; |