Subject: | hint snafu on 5.11 |
Date: | Tue, 30 Aug 2011 22:35:11 +0100 |
To: | bug-indirect [...] rt.cpan.org |
From: | Zefram <zefram [...] fysh.org> |
indirect.pm fails t/31-hints.t on perl 5.11.{0..5}, while passing on
5.10.{0..1} and 5.12.{0..4}. Failure looks like this:
t/31-hints.t .............. 1/1
# Failed test 'indirect does not vivify entries in %^H'
# at t/31-hints.t line 21.
# got: ''
# expected: 'a,1'
# Looks like you failed 1 test of 1.
t/31-hints.t .............. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
The test involves loading Unicode stuff through a regexp. The problem
doesn't occur on 5.12.0+ presumably due to the change of Perl_swash_init()
to using SAVEHINTS(), which is the actual fix for the underlying Perl bug.
Why it starts occurring on 5.11.0 is less obvious, but there is some
change to Perl_save_hints() that might be it. After this much time I
don't recall exactly what those changes were about.
Turning on I_WORKAROUND_REQUIRE_PROPAGATION in indirect.xs doesn't
fix it. I don't understand indirect's require magic well enough to see
whether it can be readily made to work around this issue. Empirically,
Lexical::SealRequireHints does fix it.
5.11 not a priority, blah blah. I like to keep 5.11 as working as
possible, because they're useful for debugging things that behave
differently on 5.10 and 5.12.
-zefram