Improvements to 31c9a3 - CPAN code did depend on the previous behaviour of blessing...
authorNicholas Clark <nick@ccl4.org>
Sun, 7 Feb 2010 01:55:32 +0000 (17:55 -0800)
committerJesse Vincent <jesse@bestpractical.com>
Sun, 7 Feb 2010 02:02:34 +0000 (18:02 -0800)
commitd963bf01c4c4db296760b1148f98bf668efcaf58
tree2cb11035e6ab5271b3ec9c18f6f33f980afc0003
parent23d72198749db53785b1c67cd1a37697afb95fc0
Improvements to 31c9a3 - CPAN code did depend on the previous behaviour of blessing filehandles into FileHandle

It turns out that it's not quite as simple as blessing into IO::File.
If you do (just) that, then it breaks any existing code that does
C<require IO::Handle;> to allow it to call methods on file handles,
because they're blessed into IO::File, which isn't loaded. (Note this code
doesn't assume that methods in IO::Seekable are there to be called)

So, it all should work if you also set @IO::File:::ISA correctly?
That way, code that assumes that methods from IO::Handle can be called will
work. However, gv.c now starts complaining (but not failing) if IO::Handle,
IO::Seekable and Exporter aren't present, because it goes looking for
methods in them.

So the solution seems to be to set @IO::File::ISA *and* create (empty)
stashes for the other 3 packages. Patch appended, but not applied.
MANIFEST
ext/Devel-Peek/t/Peek.t
perl.c
sv.c
t/op/filehandle.t [new file with mode: 0644]
t/op/ref.t
t/op/stash.t