This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix SvTRUE() cast (broke xor)
authorDavid Mitchell <davem@iabyn.com>
Mon, 31 Jul 2017 22:32:23 +0000 (23:32 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 31 Jul 2017 22:32:23 +0000 (23:32 +0100)
commit1fb2d101eac30e2ec4b826a4c493bb6f1232dc16
treeed8c881dd4143a7fcef3a537a7bf050f8d10b047
parent1bae5449e61e39862b6efff04d1153aabbcf2320
fix SvTRUE() cast (broke xor)

RT #131820

It turns out that the 'xor' operator is almost completely untested in
core. A recent change of mine to the SvTRUE() macros made it sometimes
return an int (SvIVX(sv)) rather than a boolean (SvIVX(sv)!=0), while its
documented to return a boolean.

pp_xor() tests for (SvTRUE(left) != SvTRUE(right)) which subsequently
broke, e.g. (1 xor 5) started returning true rather than false.

Fix SvTRUE() and add some basic xor tests.
sv.h
t/op/lop.t