Generate unicode_limits.h. To ensure we do not overflow a size_t while case mapping on a 32-bit platform, we need to know the maximum amount a UTF8 string can expand.
Calculate that maximum while generating unicode tables as a part of the update-unicode target, and output into a new header unicode_limits.h. Minor refactoring along the way. Add a StaticAssertDecl to check that a MaxAllocSize text value expanded by that amount would still have a length that fits in size_t. (We couldn't actually create a new text value out of that, but we still need to avoid overflow.) Reported-by: Tom Lane <[email protected]> Discussion: https://postgr.es/m/[email protected] Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/2cf212db5286baa7d7e80449300fe472d8c4ba9f Modified Files -------------- src/backend/utils/adt/pg_locale_builtin.c | 11 ++ src/common/unicode/Makefile | 6 +- src/common/unicode/generate-unicode_case_table.pl | 194 +++++++++++++++------- src/common/unicode/meson.build | 2 +- src/common/unicode_case.c | 12 +- src/include/common/unicode_case_table.h | 9 +- src/include/common/unicode_limits.h | 39 +++++ 7 files changed, 202 insertions(+), 71 deletions(-)
