This patch fixes the bug in which the "init" vtable method override is
called instead of "init_pmc" when init=NULL is passed to
Parrot_instantiate_object_init, instead of init=PMCNULL. The choice
of which method to call rested on an C<if(init)> statement, which can
incorrectly return true if init == PMCNULL.
--
Alek Storm
--
Alek Storm
The attached test case demonstrates that passing NULL from C into PIR,
then passing that value to C<new>, causes the wrong init method to be
called. Yes, it's rare, but the patch doesn't cost anything, so it
might as well be applied. It won't matter once we get rid of the old
object system, but it makes me feel better for now :)
P.S. I picked Integer to stick foo() in arbitrarily, just to make
things simpler.
--
Alek Storm
Looks like either (a) you forgot to attach the patch or (b) RT ate it.
Care to try again? :)
--
Matt Diephouse
http://matt.diephouse.com
Oops - looks like the former. Here we go...
--
Alek Storm