> Yep a bug is here. But this bug is a BASIC compiler bug. Things that go
> into aggregates (or are stored in lex pads/global tables) are stored by
> reference. You have to clone PMCs to get independed vars:
Thanks for clearing this up. In my head I was confused between the difference in,
say, "new PerlHash" which creates a brand new PerlHash and sets a Px register to that
new PerlHash so I can say:
$P0=new PerlHash
$P1=new PerlArray
$P0["foo"]=$P1
$P1=new PerlArray
$P0["bar"]=$P2
where the PerlHash has references to two different arrays, as opposed to things like
getstd(in|out|err):
$P1=new PerlArray
getstdin $P0
$P1[0]=$P0
getstdin $P0 # Oops.
$P1[1]=$P0
Where $P0 keeps getting re-used by getstdin and the same reference gets shoved into
the PerlArray each time.
I suppose PMC authors (or opcode authors?) should be pretty clear on whether they're
re-using the same PMC or cloning up a new one.