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
Bleadperl v5.29.9-123-gaabfeadc64 breaks ETHER/signatures-0.13.tar.gz #16976
Comments
From @andkSample fail report: http://www.cpantesters.org/cpan/report/a0340894-64b7-11e9-a696-470fc989963f Xref: https://rt.cpan.org/Ticket/Display.html?id=129281 -- |
From @iabynOn Mon, Apr 22, 2019 at 10:34:57AM -0700, (Andreas J. Koenig) (via RT) wrote:
This bisects to the following. I haven't looked further yet. commit aabfead Make a few parse fcns accessible to B::Hooks::Parser The tests are failing this assertion: t/weird.t .............. perl5.29.10: toke.c:2538: S_sublex_done: Assertion `PL_lex_inwhat == OP_SUBST || PL_lex_inwhat == OP_TRANS' failed. which is saying that if PL_lex_repl is true (we're toking a -- |
The RT System itself - Status changed from 'new' to 'open' |
From @khwilliamsonIf I comment out that assert, it thinks things are syntax errors, so it needs further investigation |
From @iabynOn Wed, Apr 24, 2019 at 10:26:44AM -0700, Karl Williamson via RT wrote:
The proximate cause is that signatures.xs not clearing PL_lex_stuff at a This Proof of Concept fix passes all tests in blead: Inline Patch--- signatures.xs- 2019-04-26 21:53:04.430901853 +0100
+++ signatures.xs 2019-04-26 22:07:32.304999812 +0100
@@ -151,6 +151,9 @@
return op;
}
+ assert(PL_lex_stuff == op_sv);
+ PL_lex_stuff = NULL;
+
tmp = hook_toke_scan_str (aTHX_ s);
tmp2 = hook_parser_get_lex_stuff (aTHX);
hook_parser_clear_lex_stuff (aTHX);
What is happening is that perl parses a sub prototype by using scan_str() sub foo ($x) { ... } scan_str() sets PL_lex_stuff to the extracted prototype, i.e. '$x' if (have_proto) { B-Hooks-Parser / signatures.xs hook into the ck_foo() mechanism, so that At this point it calls scan_str() to skip over the prototype. Here it goes So that diff above just ensures that PL_lex_stuff is NULL before calling -- |
From @khwilliamsonOn 4/26/19 3:33 PM, Dave Mitchell wrote:
Thanks for doing this. I was dreading having to work on this ticket, as When run under older perls the stolen chunk is used, so it is lquite
I believe this means this ticket is no longer a blocker. |
From @iabynOn Fri, Apr 26, 2019 at 04:16:45PM -0600, Karl Williamson wrote:
I've now analysed it running under 5.28.0 and understand why it broke Blead's scan_str() has the property of saving the scanned string in Older perls (and the stolen scan_str()) instead copy on second call In all cases signatures.xs was buggy not to clear PL_lex_stuff So I think my fix is good - I'll mention it in the associated rt.cpan.org I'll also remove this from the blockers list. -- |
From @karenetheridgeI've released 0.14 with this patch. Thank you very much! |
@karenetheridge - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#134058 (status was 'resolved')
Searchable as RT134058$
The text was updated successfully, but these errors were encountered: