Make sort’s warnings dependent on the right hints
authorFather Chrysostomos <sprout@cpan.org>
Sun, 20 Nov 2011 02:21:46 +0000 (18:21 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 20 Nov 2011 02:21:46 +0000 (18:21 -0800)
commita9ea019aef3b2976fab5d804799be8a75f0de48d
treef18638e886bce98dc0053f2e25b2110d35374583
parent0e82bbcd2c141a233d06826ca4011728c8287daf
Make sort’s warnings dependent on the right hints

sort’s warnings about uninitialized (or non-numeric) values returned
from comparison routines are emitted in the scope of the compar-
ison routine, not the sort function itself.  So, not only does
‘use warnings; sort...’ not always warn, but the line numbers can be
off, too:

$ ./perl -Ilib -e '()=sort flobbp 1,2;' -e'use warnings;sub flobbp{"foo"}'
Argument "foo" isn't numeric in sort at -e line 2.

The solution is to restore PL_curcop to its previous value before get-
ting a number out of the comparison routine’s return value.
pp_sort.c
t/lib/warnings/9uninit