engine with case insensitive matches. There were actually several bugs
all interacting with each other, one of which is quite old. These were
all interacting to produce strange results.
The original bug was that
$ord=181; $u=$c=chr($ord); utf8::upgrade $u;
was not working. This then lead to the discovery that
was not working for $ord>127.
This in turn lead to the discovery that when ibcmp_utf8() is called
without a defined endpoint for each string it automatically and
silently returns no match, which the regex was doing. I added asserts
to catch this case under DEBUGGING.
Following this I found that the FOLDCHAR regop was not being produced
when a codepoint it is supposed to match is escaped. This was also
And lastly I discovered some unnecessary code and added some comments
about strangeness in the code.
The file 3030-up.patch is the full deal as one. The others are each
stage of the process.
The only thing im not feeling confident about is whether i was too
aggressive with the asserts. Its possible i have set it up to assert
in a legitimate use case. Im still waiting to see.
Ive included a single patch that has all the changes and a tar.gz of
each of my local commits.
perl -Mre=debug -e "/just|another|perl|hacker/"