Merijn notices this line in 5.8.x in S_new_logop

  if ((type == OP_AND) == (SvTRUE(((SVOP*)first)->op_sv))) {

It's wonky. It seems to be wrong. But it's been that way since 5.8.0 started.

The corresponding point in blead is

  if ((type == OP_AND &&  SvTRUE(((SVOP*)first)->op_sv)) ||
      (type == OP_OR  && !SvTRUE(((SVOP*)first)->op_sv)) ||
      (type == OP_DOR && !SvOK(((SVOP*)first)->op_sv))) {


This was patched by Marcus Holland-Moritz, changing that == to && in the 
process:

http://public.activestate.com/cgi-bin/perlbrowse?patch=22625

Presumably '==' is wrong. But if this is a bug, how can it be detected
with a perl level regression test?

Nicholas Clark

Reply via email to