On Thu, Jan 28, 2010 at 12:49:20PM -0500, Tom Lane wrote: > Joe Conway <m...@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.
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 9277072..2dd3458 100644 *** a/src/pl/plperl/plperl.c --- b/src/pl/plperl/plperl.c *************** plperl_create_sub(plperl_proc_desc *prod *** 1113,1120 **** if (count == 1) { GV *sub_glob = (GV*)POPs; ! if (sub_glob && SvTYPE(sub_glob) == SVt_PVGV) ! subref = newRV_inc((SV*)GvCVu((GV*)sub_glob)); } PUTBACK; --- 1113,1123 ---- if (count == 1) { GV *sub_glob = (GV*)POPs; ! if (sub_glob && SvTYPE(sub_glob) == SVt_PVGV) { ! SV *sv = (SV*)GvCVu((GV*)sub_glob); ! if (sv) ! subref = newRV_inc(sv); ! } } PUTBACK;
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers