Re: plperl compiler warning

Tim Bunce <tim.bunce@pobox.com>

From: Tim Bunce <Tim.Bunce@pobox.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Joe Conway <mail@joeconway.com>, Tim Bunce <Tim.Bunce@pobox.com>, "Hackers (PostgreSQL)" <pgsql-hackers@postgresql.org>
Date: 2010-01-28T19:49:37Z
Lists: pgsql-hackers

Attachments

On Thu, Jan 28, 2010 at 12:49:20PM -0500, Tom Lane wrote:
> Joe Conway <mail@joeconway.com> writes:
> > I pull directly from CVS, not git, but in any case my line 1117 is
> >       subref = newRV_inc((SV*)GvCVu((GV*)sub_glob));
> > so it appears to be the same
> 
> >> What perl version are you using?
> >> What compiler version are you using?
> > I'm on stock Fedora 12:
> 
> I see the same on Fedora 11.  The -E expansion of the line in question is
> 
>    subref = Perl_newRV(((PerlInterpreter *)pthread_getspecific((*Perl_Gthr_key_ptr(((void *)0))))), (SV*)((((GV*)sub_glob)->sv_u.svu_gp)->gp_cvgen ? ((void *)0) : (((GV*)sub_glob)->sv_u.svu_gp)->gp_cv));
> 
> so it's evidently unhappy about the fact that GvCVu can return null,
> while Perl_newRV is declared __attribute__((nonnull(2))).
> 
> It looks to me like this is probably a live bug not just compiler
> hypersensitivity.

Yes. (ISTR there have been cases where the notnull attribute was
misapplied to some perl functions, but that's not the case here.)

I think I missed this because the Xcode compiler on Snow Leopard is
fairly old (gcc 4.2.1).

Patch attached.

Tim.