diff options
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; |