diff --git a/src/ucd-tools/CHANGELOG.md b/src/ucd-tools/CHANGELOG.md index 67976c29..1b247c55 100644 --- a/src/ucd-tools/CHANGELOG.md +++ b/src/ucd-tools/CHANGELOG.md @@ -7,6 +7,10 @@ These are eSpeak NG specific modifications to the `ucd-tools` project: * `data/espeak-ng` data files for eSpeak NG extended data. * espeak-ng PropList property lookup as part of the `ucd_property` API. +## 11.0.0.1 - 2021-05-04 + +* Fix -fsanitize=address issues in case.c. + ## 11.0.0 - 2018-07-08 * Make the ispunct ctype compatibility implementation conformant. diff --git a/src/ucd-tools/COPYING.UCD b/src/ucd-tools/COPYING.UCD index 51608df1..38ff09a1 100644 --- a/src/ucd-tools/COPYING.UCD +++ b/src/ucd-tools/COPYING.UCD @@ -1,8 +1,29 @@ +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. + +Unicode Data Files do not include PDF online code charts under the +directory http://www.unicode.org/Public/. + +Software includes any source code published in the Unicode Standard +or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. + +NOTICE TO USER: Carefully read the following legal agreement. +BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. +IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +THE DATA FILES OR SOFTWARE. + COPYRIGHT AND PERMISSION NOTICE -Copyright © 1991-2014 Unicode, Inc. All rights reserved. -Distributed under the Terms of Use in -http://www.unicode.org/copyright.html. +Copyright © 1991-2018 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation @@ -11,14 +32,11 @@ a copy of the Unicode data files and any associated documentation without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files -or Software are furnished to do so, provided that -(a) this copyright and permission notice appear with all copies -of the Data Files or Software, -(b) this copyright and permission notice appear in associated -documentation, and -(c) there is clear notice in each modified Data File or in the Software -as well as in the documentation associated with the Data File(s) or -Software that the data or software has been modified. +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE diff --git a/src/ucd-tools/src/case.c b/src/ucd-tools/src/case.c index 04c9736a..dd17dc4f 100644 --- a/src/ucd-tools/src/case.c +++ b/src/ucd-tools/src/case.c @@ -1,6 +1,6 @@ /* Unicode Case Conversion * - * Copyright (C) 2012-2018 Reece H. Dunn + * Copyright (C) 2012-2018, 2021 Reece H. Dunn * * This file is part of ucd-tools. * @@ -19,7 +19,7 @@ */ /* NOTE: This file is automatically generated from the UnicodeData.txt file in - * the Unicode Character database by the ucd-tools/tools/categories.py script. + * the Unicode Character database by the ucd-tools/tools/case.py script. */ #include "ucd/ucd.h" @@ -2822,7 +2822,7 @@ 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]); + int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1; while (begin <= end) { int pos = (begin + end) / 2; @@ -2840,7 +2840,7 @@ 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]); + int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1; while (begin <= end) { int pos = (begin + end) / 2; @@ -2858,7 +2858,7 @@ 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]); + int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1; while (begin <= end) { int pos = (begin + end) / 2; diff --git a/src/ucd-tools/tools/case.py b/src/ucd-tools/tools/case.py index 9daa5740..b6d15efd 100755 --- a/src/ucd-tools/tools/case.py +++ b/src/ucd-tools/tools/case.py @@ -1,6 +1,6 @@ #!/usr/bin/python -# Copyright (C) 2012-2018 Reece H. Dunn +# Copyright (C) 2012-2018, 2021 Reece H. Dunn # # This file is part of ucd-tools. # @@ -33,7 +33,7 @@ for data in ucd.parse_ucd_data(ucd_rootdir, 'UnicodeData'): if __name__ == '__main__': sys.stdout.write("""/* Unicode Case Conversion * - * Copyright (C) 2012-2018 Reece H. Dunn + * Copyright (C) 2012-2018, 2021 Reece H. Dunn * * This file is part of ucd-tools. * @@ -52,7 +52,7 @@ if __name__ == '__main__': */ /* NOTE: This file is automatically generated from the UnicodeData.txt file in - * the Unicode Character database by the ucd-tools/tools/categories.py script. + * the Unicode Character database by the ucd-tools/tools/case.py script. */ #include "ucd/ucd.h" @@ -83,7 +83,7 @@ struct case_conversion_entry sys.stdout.write('codepoint_t ucd_to%s(codepoint_t c)\n' % case) sys.stdout.write('{\n') sys.stdout.write('\tint begin = 0;\n') - sys.stdout.write('\tint end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]);\n') + sys.stdout.write('\tint end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1;\n') sys.stdout.write('\twhile (begin <= end)\n') sys.stdout.write('\t{\n') sys.stdout.write('\t\tint pos = (begin + end) / 2;\n')