Commit ID 2be0c6591ea5d56ee7fbc364228f24b85f569a5c
|
|
Contributor: | Jim Meyering | Files Modified: | 8 |
| Date: | 16-June-2012 at 10:32 | Lines Added: | 90 | |
| Repository: | git://git.sv.gnu.org/grep.git master | Lines Removed: | 24 | |
| Commit Comment: | grep -i: work also when converting to lower-case inflates byte count Commit v2.12-16-g7aa698d addressed the case in which the lower-case representation of an input byte occupies fewer bytes than the original. However, even with commit v2.12-20-g074842d, grep -i would still misbehave when converting a character to lower-case increased its byte count. The map-manipulation code assumed that the case conversion could only shrink the byte count. With the consideration that it may also inflate it, the deltas recorded in the map array must be signed, and we must account for the one-to-two-or-more mapping when the original-to-lower-case conversion causes the byte count to increase. * src/searchutils.c (mbtolower): When a lower-case character occupies more than one byte, set its remaining map slots to zero. Change the type of the map to be signed, and compute the change in character byte count as new_length - old_length. * src/search.h: Include <stdint.h>, for decl of intmax_t. (mb_case_map_apply): Adjust for signed increments: each map entry is now signed. (mb_len_map_t): Define type. Thanks to Paul Eggert for noticing in review that using a bare "char" as the base type would be wrong on systems for which it is a signed type (as with gcc's -funsigned-char). * src/kwsearch.c (Fcompile, Fexecute): Likewise. * src/dfasearch.c (kwsincr_case, EGexecute): Likewise. * tests/turkish-I-without-dot: New test. Thanks to Paolo Bonzini for the tip that in the tr_TR.utf8 locale, mapping "I" to lower case increases the character's byte count. * tests/Makefile.am (TESTS): Add it. * tests/init.cfg (require_tr_utf8_locale_): New function. * NEWS (Bug fixes): Expand the existing entry. |
|||
| Language | Code Added | Code Removed | Comments Added | Comment Removed | Blanks Added | Blanks Removed | |
|---|---|---|---|---|---|---|---|
| C | 16 | 12 | 23 | 12 | 3 | 0 | |
| shell script | 8 | 0 | 28 | 0 | 11 | 0 | |
| Automake | 1 | 0 | 0 | 0 | 0 | 0 | |
| File | Language | Code Added | Code Removed | Comments Added | Comment Removed | Blanks Added | Blanks Removed | |
|---|---|---|---|---|---|---|---|---|
| NEWS | No source code was detected in this file. | |||||||
| src/dfasearch.c | C | 2 | 2 | 0 | 0 | 0 | 0 | |
| src/kwsearch.c | C | 2 | 2 | 0 | 0 | 0 | 0 | |
| src/search.h | C | 6 | 4 | 5 | 1 | 1 | 0 | |
| src/searchutils.c | C | 6 | 4 | 18 | 11 | 2 | 0 | |
| tests/init.cfg | No source code was detected in this file. | |||||||
| tests/Makefile.am | Automake | 1 | 0 | 0 | 0 | 0 | 0 | |
| tests/turkish-I-without-dot | shell script | 8 | 0 | 28 | 0 | 11 | 0 | |
Copyright
©
2013
Black Duck Software, Inc.
and its contributors, Some Rights Reserved. Unless otherwise marked, this work is licensed under a
Creative Commons Attribution 3.0 Unported License
. Ohloh
®
and the Ohloh logo are trademarks of
Black Duck Software, Inc.
in the United States and/or other jurisdictions. All other trademarks are the property of their respective holders.