Description of problem: Using a regular expression range like [C-a] works fine if compiled with regcomp() with just the REG_EXTENDED flag, but if the REG_ICASE flag is added too, regcomp() returns an error "Invalid range end". Testing other ranges with REG_ICASE reveals: [A-Z^-z] is invalid: Invalid range end (11) [A-Z^_`a-z] is ok [C-a] is invalid: Invalid range end (11) [C-f] is ok [_-a] is invalid: Invalid range end (11) [<-a] is ok [z-{] is ok It appears that regcomp() is capitalizing the range if the REG_ICASE flag is used, thus [C-a] becomes [C-A] and since A comes before C, the range is invalid. Likewise, in locales that match ASCII, ^ becomes before z, but after Z, so [A-Z^-z] becomes invalid, and _ comes after A but before a, so [_-a] becomes invalid. If this is not considered a bug, then at the very least, the regex(3) man page should note the side-effects of using REG_ICASE. Version-Release number of selected component (if applicable): glibc-2.3.4-2.43 How reproducible: every time Steps to Reproduce: 1. compile a regex range [C-a] or [_-a] with regcomp() and REG_ICASE flag Actual results: regcomp() returns an "Invalid range end" error Expected results: regcomp() is consistent with or without REG_ICASE flag Additional info: If this is considered not a bug, then please update the regcomp(3) man page to note the side effects of using REG_ICASE.
Reported upstream at http://sourceware.org/bugzilla/show_bug.cgi?id=10290
Created attachment 348288 [details] test case
Development Management has reviewed and declined this request. You may appeal this decision by reopening this request.