Fix uninit warnings under old cow
authorFather Chrysostomos <sprout@cpan.org>
Tue, 2 Oct 2012 16:59:30 +0000 (09:59 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 3 Oct 2012 01:27:47 +0000 (18:27 -0700)
commitb5b0f9e8f734fa95ae8850dfa12eed44d86f69a6
tree12d3d90dbf64ae859e286343a09a789e8b882c7c
parenta1a8e64184f13718e60c639f874516594637bfe9
Fix uninit warnings under old cow

Applying copy-on-write to pad names when generating uninitial-
ised warnings results in modifications to SvPVX(sv) after
sv_setsv(sv,padname) affecting the pad name as well.  sv_setsv_flags
with no flags avoids the COW.

Under PERL_OLD_COPY_ON_WRITE and warnings, this:

my (@ma);
$v = sin $ma[1000];
$v = sin $ma[$$];

was producing this:

$ pbpaste|./miniperl -w
Use of uninitialized value $ma[1000] in sin at - line 2.
Use of uninitialized value within $ma in sin at - line 3.

If you comment out the sceond line:

$ pbpaste|./miniperl -w
Name "main::v" used only once: possible typo at - line 3.
Use of uninitialized value within @ma in sin at - line 3.

Notice the @ma/$ma difference.

The first uninit warning was modifying the pad name.
sv.c