From 3025a28bc2e89af05c9d287a07223be0447d3c2f Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Tue, 28 Oct 2014 14:33:46 +0100 Subject: external/icu: More workaround UBSan flexible array member detection Change-Id: Ie83e3104bd639be42ac0c6e25fc2eafd88cf0c6f --- external/icu/icu-ubsan.patch.0 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'external/icu') diff --git a/external/icu/icu-ubsan.patch.0 b/external/icu/icu-ubsan.patch.0 index 5f9e85f502eb..7268bb7ab06b 100644 --- a/external/icu/icu-ubsan.patch.0 +++ b/external/icu/icu-ubsan.patch.0 @@ -9,9 +9,24 @@ /* This array does not have two elements */ /* Array Size is actually fData->fHeader->fCatCount */ /* CAUTION: see RBBITableBuilder::getTableSize() */ +@@ -126,7 +126,7 @@ + uint32_t fRowLen; /* Length of a state table row, in bytes. */ + uint32_t fFlags; /* Option Flags for this state table */ + uint32_t fReserved; /* reserved */ +- char fTableData[4]; /* First RBBIStateTableRow begins here. */ ++ char fTableData[1]; /* First RBBIStateTableRow begins here. */ + /* (making it char[] simplifies ugly address */ + /* arithmetic for indexing variable length rows.) */ + }; --- source/common/rbbitblb.cpp +++ source/common/rbbitblb.cpp -@@ -1072,10 +1072,10 @@ +@@ -1067,15 +1067,15 @@ + return 0; + } + +- size = sizeof(RBBIStateTable) - 4; // The header, with no rows to the table. ++ size = offsetof(RBBIStateTable, fTableData); // The header, with no rows to the table. + numRows = fDStates->size(); numCols = fRB->fSetBuilder->getNumCharCategories(); -- cgit v1.2.3