diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-08-26 14:39:48 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-08-26 15:25:04 +0100 |
commit | 5d952d4208aa61b6bb0c20d36745d0554be7cec3 (patch) | |
tree | fc01092f8f12a1f33072e5fa272861efdc4844e5 /external | |
parent | 6f9a52abc8a9c8bf98568a5653c25404ef017cac (diff) |
Resolves: icu#11100 resolveImplicitLevels woes
Change-Id: I0c052cbcfe375bd1279c2235b53c909920e2e779
Diffstat (limited to 'external')
-rw-r--r-- | external/icu/UnpackedTarball_icu.mk | 1 | ||||
-rw-r--r-- | external/icu/icu4c-icu11100.patch.1 | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/external/icu/UnpackedTarball_icu.mk b/external/icu/UnpackedTarball_icu.mk index 07dcab842e32..3f9eda26c3a1 100644 --- a/external/icu/UnpackedTarball_icu.mk +++ b/external/icu/UnpackedTarball_icu.mk @@ -23,6 +23,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\ external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \ external/icu/icu-ubsan.patch.0 \ external/icu/icu4c-icu11054.patch.1 \ + external/icu/icu4c-icu11100.patch.1 \ )) # vim: set noet sw=4 ts=4: diff --git a/external/icu/icu4c-icu11100.patch.1 b/external/icu/icu4c-icu11100.patch.1 new file mode 100644 index 000000000000..d44dc83cfd9e --- /dev/null +++ b/external/icu/icu4c-icu11100.patch.1 @@ -0,0 +1,24 @@ +--- icu/source/common/ubidi.c.orig 2014-08-09 20:54:39.338833533 +0100 ++++ icu/source/common/ubidi.c 2014-08-09 20:55:48.625469055 +0100 +@@ -2097,6 +2097,12 @@ + return DirProp_ON; + } + ++static int ++isolatesavailable(UBiDi *pBiDi) { ++ return (pBiDi->isolateCount < SIMPLE_ISOLATES_SIZE-1 || ++ pBiDi->isolateCount < pBiDi->isolatesSize/sizeof(Isolate)-1); ++} ++ + static void + resolveImplicitLevels(UBiDi *pBiDi, + int32_t start, int32_t limit, +@@ -2240,7 +2246,7 @@ + /* look for the last char not a BN or LRE/RLE/LRO/RLO/PDF */ + for(i=limit-1; i>start&&(DIRPROP_FLAG(dirProps[i])&MASK_BN_EXPLICIT); i--); + dirProp=dirProps[i]; +- if((dirProp==LRI || dirProp==RLI) && limit<pBiDi->length) { ++ if((dirProp==LRI || dirProp==RLI) && limit<pBiDi->length && isolatesavailable(pBiDi)) { + pBiDi->isolateCount++; + pBiDi->isolates[pBiDi->isolateCount].stateImp=stateImp; + pBiDi->isolates[pBiDi->isolateCount].state=levState.state; |