New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
\C yields check_locale_boundary_crossing assertion failure #14520
Comments
From @hvdsAFL (<http://lcamtuf.coredump.cx/afl/>) finds this: % ./perl -Ilib -e '"\700" =~ /\C0/il' I guess this is the sort of reason why \C was deprecated in the first place, but I wonder if we could be doing a better job to detect this and either disallow it earlier or in some other way survive better. Hugo |
From @hvdsHere's a variant that triggers a different assert: % ./perl -Ilib -e '"0\7000"=~m{\C+?0}' Hugo |
From @cpansproutOn Tue Feb 17 18:22:58 2015, hv wrote:
I have a debugging 5.14.4 installed, and it doesn’t fail the assertion. When was this bug introduced? -- Father Chrysostomos |
The RT System itself - Status changed from 'new' to 'open' |
From @hvdsOn Sun Feb 22 11:20:18 2015, sprout wrote:
The first case (/\C0/il) bisects to quite recently: commit 1d39b2c Simplify foldEQ_utf8 The second case was in 5.18: commit eb72505 regmatch(): remove reginput from CURLY etc Hugo |
From @khwilliamsonOn 02/22/2015 06:59 PM, Hugo van der Sanden via RT wrote:
This bisect doesn't really mean anything. Things were added that didn't I'm having trouble reproducing it. What locale is in effect?
I don't know what to do here. It would be a lot of work to adequately |
From @hvdsOn Sat Feb 28 20:43:06 2015, public@khwilliamson.com wrote:
C locale: % LC_ALL=C ./perl -Ilib -e '"\700" =~ /\C0/il' In utf8.c:Perl__to_utf8_fold_flags, it's assumed we're at the start of a well-formed character; in this case, however, we're calling it with p pointing at the second octet of [\xc7 \x80], so we fail the tests UTF8_IS_INVARIANT(*p) and UTF8_IS_DOWNGRADEABLE_START(*p) and fall through to: Here's the full stack trace: perl: utf8.c:1890: S_check_locale_boundary_crossing: Assertion `((U8)(*p) >= 0xc4)' failed. Program received signal SIGABRT, Aborted. Hugo |
From @khwilliamsonThe entire \C construct, which this ticket is about, is being removed as of 5.24, so bugs with it are no longer relevant |
@khwilliamson - Status changed from 'open' to 'pending release' |
From @khwilliamsonThank you for submitting this report. You have helped make Perl better. Perl 5.24.0 may be downloaded via https://metacpan.org/release/RJBS/perl-5.24.0 |
@khwilliamson - Status changed from 'pending release' to 'resolved' |
Migrated from rt.perl.org#123861 (status was 'resolved')
Searchable as RT123861$
The text was updated successfully, but these errors were encountered: