diff --git a/Makefile.am b/Makefile.am index f2bd2d3590..35effd64b8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -222,7 +222,9 @@ endif src_espeak_ng_LDADD = src/libespeak-ng.la ${PCAUDIOLIB_LIBS} src_espeak_ng_SOURCES = src/espeak-ng.c +if HAVE_LIBFUZZER nodist_EXTRA_src_espeak_ng_SOURCES = force-cxx-linking.cxx +endif ##### tests: diff --git a/src/ucd-tools/src/case.c b/src/ucd-tools/src/case.c index 6408a43654..c414ff3b0c 100644 --- a/src/ucd-tools/src/case.c +++ b/src/ucd-tools/src/case.c @@ -2822,8 +2822,9 @@ static const struct case_conversion_entry case_conversion_data[] = codepoint_t ucd_toupper(codepoint_t c) { int begin = 0; - int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); - while (begin <= end) + int size = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); + int end = size; + while (begin <= end && (begin + end) / 2 < size) { int pos = (begin + end) / 2; const struct case_conversion_entry *item = (case_conversion_data + pos); @@ -2840,8 +2841,9 @@ codepoint_t ucd_toupper(codepoint_t c) codepoint_t ucd_tolower(codepoint_t c) { int begin = 0; - int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); - while (begin < end) + int size = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); + int end = size; + while (begin <= end && (begin + end) / 2 < size) { int pos = (begin + end) / 2; const struct case_conversion_entry *item = (case_conversion_data + pos); @@ -2858,8 +2860,9 @@ codepoint_t ucd_tolower(codepoint_t c) codepoint_t ucd_totitle(codepoint_t c) { int begin = 0; - int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); - while (begin <= end) + int size = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); + int end = size; + while (begin <= end && (begin + end) / 2 < size) { int pos = (begin + end) / 2; const struct case_conversion_entry *item = (case_conversion_data + pos);