Bug fix for require dieing as make_immutable doesn't return true.
This is due to a core bug in perl where void context gets passed through
to make_immutable, which means it returns nothing:
perl -e 'require Catalyst::Script::Create;' succeeds
perl -e 'sub foo { require Catalyst::Script::Create; } foo()' fails
perl -e 'sub foo { @a = require Catalyst::Script::Create; } foo()' succeeds
perl -e 'sub foo { $a = require Catalyst::Script::Create; } foo()' succeeds
perl -e 'sub foo { require Catalyst::Script::Create; 1 } foo()' succeeds
perl -e 'sub foo { require Catalyst::Script::Create } @x = foo()' succeeds
perl -e 'sub foo { require Catalyst::Script::Create } $x = foo()' succeeds
Perl versions affected: 5.8 and 5.10, others do not have this issue
commit
021f53de09926 by Gerard Goossen appears to be the core bugfix
The core bug was that that was being overridden by the special handling
for return expressions, and the fix is to prevent that overriding.
Rruntime correctness depends on GIMME_V being correct for the require op;
it's not forced inside pp_require
Zefram++ for digging into this and working out what's going on!