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