On Wed, 22 Oct 2003, Leopold Toetsch wrote:
> Simon Glover <[EMAIL PROTECTED]> wrote:
> > Clearly there's a bug here, since the behaviour should be consistent;
>
> I have changed the PerlInts to work like all others, thanks
I don't think your fix is correct, since:
new P0, .PerlNum
new P1, .PerlInt
new P2, .PerlNum
set P0, 10.5
set P1, 0
or P2, P1, P0
print P2
print "\n"
end
will now print 10, rather than 10.5 (which is better than the behaviour
before the fix, but which is still not right).
Having done some more nosing around, I see that PerlString doesn't
actually have its own implementation of logical_or; instead, it falls
back on the scalar.pmc version, which does:
void logical_or (PMC* value, PMC* dest) {
if (DYNSELF.get_bool()) {
VTABLE_set_pmc(INTERP, dest, SELF);
}
else {
VTABLE_set_pmc(INTERP, dest, value);
}
}
Is there a good reason why we're not doing the same thing for
PerlInt/Num/Undef?
Simon