diff options
author | Tor Lillqvist <tml@collabora.com> | 2020-05-05 18:58:32 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2020-05-06 18:11:24 +0200 |
commit | f120af264412caf1f3e7446981070ee8da9a076b (patch) | |
tree | b045f97cba83ba8cc42c4e126338aac7a973cfd2 /i18npool | |
parent | e2e76c1f8cdfa844aa660c52870573e739d3710c (diff) |
ICU requires that a collator charset data array is four-byte-aligned
See workdir/UnpackedTarball/icu/source/common/utrie2.cpp, the
U_POINTER_MASK_LSB() check:
if( length<=0 || (U_POINTER_MASK_LSB(data, 3)!=0) ||
valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
Apparently the data pointer there is always a multiple of four bytes
from the start of the data array that the gencoll_rule code generates.
Change-Id: I9b98b01b49b5800e1db8b077a4221b82d59510bf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93507
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/source/collator/gencoll_rule.cxx | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/i18npool/source/collator/gencoll_rule.cxx b/i18npool/source/collator/gencoll_rule.cxx index 88b8b50ea423..2056008d475c 100644 --- a/i18npool/source/collator/gencoll_rule.cxx +++ b/i18npool/source/collator/gencoll_rule.cxx @@ -50,7 +50,7 @@ static void data_write(char* file, char* name, sal_uInt8 *data, sal_Int32 len) fprintf(fp, "\nextern \"C\" {\n"); // generate main dict. data array - fprintf(fp, "\nstatic const sal_uInt8 %s[] = {", name); + fprintf(fp, "\nalignas(4) static const sal_uInt8 %s[] = {", name); sal_Int32 count = 0; for (sal_Int32 i = 0; i < len; i++) { |