diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-08-09 21:14:03 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-08-18 11:33:21 -0500 |
commit | 1f39f4466f334165d85d1ed8cccf33ff14f91434 (patch) | |
tree | 3f29a89204f66a41cf80049a8886798b623a4f03 /external | |
parent | c80754dac761b8489250c1ede510fb76b98cc590 (diff) |
Resolves: icu#11054 crashes in bracketAddOpening
(cherry picked from commit d79d2f0ef7a0e300a3ee4be128c625121d0c4b26)
Conflicts:
external/icu/UnpackedTarball_icu.mk
Change-Id: I5dd63fa41c1568e8bf2d120cc0de5d2c44dd789c
Reviewed-on: https://gerrit.libreoffice.org/10907
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'external')
-rw-r--r-- | external/icu/UnpackedTarball_icu.mk | 1 | ||||
-rw-r--r-- | external/icu/icu4c-icu11054.patch.1 | 44 |
2 files changed, 45 insertions, 0 deletions
diff --git a/external/icu/UnpackedTarball_icu.mk b/external/icu/UnpackedTarball_icu.mk index 77cd38a8bb1f..243b17cbe062 100644 --- a/external/icu/UnpackedTarball_icu.mk +++ b/external/icu/UnpackedTarball_icu.mk @@ -21,6 +21,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\ external/icu/icu4c-mkdir.patch \ external/icu/icu4c-buffer-overflow.patch \ external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \ + external/icu/icu4c-icu11054.patch.1 \ )) # vim: set noet sw=4 ts=4: diff --git a/external/icu/icu4c-icu11054.patch.1 b/external/icu/icu4c-icu11054.patch.1 new file mode 100644 index 000000000000..48d21f5507f5 --- /dev/null +++ b/external/icu/icu4c-icu11054.patch.1 @@ -0,0 +1,44 @@ +--- 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 +@@ -679,10 +679,10 @@ + bd->isoRuns[0].contextPos=0; + if(pBiDi->openingsMemory) { + bd->openings=pBiDi->openingsMemory; +- bd->openingsSize=pBiDi->openingsSize; ++ bd->openingsCount=pBiDi->openingsSize / sizeof(Opening); + } else { + bd->openings=bd->simpleOpenings; +- bd->openingsSize=SIMPLE_OPENINGS_SIZE; ++ bd->openingsCount=SIMPLE_OPENINGS_SIZE; + } + bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIAL || + bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL; +@@ -743,7 +743,7 @@ + bracketAddOpening(BracketData *bd, UChar match, int32_t position) { + IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast]; + Opening *pOpening; +- if(pLastIsoRun->limit>=bd->openingsSize) { /* no available new entry */ ++ if(pLastIsoRun->limit>=bd->openingsCount) { /* no available new entry */ + UBiDi *pBiDi=bd->pBiDi; + if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2)) + return FALSE; +@@ -751,7 +751,7 @@ + uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings, + SIMPLE_OPENINGS_SIZE * sizeof(Opening)); + bd->openings=pBiDi->openingsMemory; /* may have changed */ +- bd->openingsSize=pBiDi->openingsSize; ++ bd->openingsCount=pBiDi->openingsSize / sizeof(Opening); + } + pOpening=&bd->openings[pLastIsoRun->limit]; + pOpening->position=position; +--- icu/source/common/ubidiimp.h.orig 2014-08-09 20:55:15.053161192 +0100 ++++ icu/source/common/ubidiimp.h 2014-08-09 20:56:07.028637725 +0100 +@@ -173,7 +173,7 @@ + /* array of opening entries which should be enough in most cases; no malloc() */ + Opening simpleOpenings[SIMPLE_OPENINGS_SIZE]; + Opening *openings; /* pointer to current array of entries */ +- int32_t openingsSize; /* number of allocated entries */ ++ int32_t openingsCount; /* number of allocated entries */ + int32_t isoRunLast; /* index of last used entry */ + /* array of nested isolated sequence entries; can never excess UBIDI_MAX_EXPLICIT_LEVEL + + 1 for index 0, + 1 for before the first isolated sequence */ |