reassign 467072 perl
thanks

Hi,

On Fri, Feb 22, 2008 at 09:44:40PM +0200, Niko Tyni wrote:
> Your package fails to build with Perl 5.10.0 (currently in experimental.)
[...]
> cc1: warnings being treated as errors
> perl.c: In function 'perl_config_loadplugin':
> perl.c:1443: warning: null argument where non-null required (argument 3)
> make[4]: *** [perl_la-perl.lo] Error 1

Imho, this is a bug in perl. It is caused by passing 'Nullsv' as third
argument to load_module() which expands to Perl_load_module_nocontext()
in my case. In proto.h (l. 262), this is defined as:

  void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...)
                __attribute__nonnull__(2)
                __attribute__nonnull__(3);

However, in op.c (l. 3844) inside Perl_vload_module() (which is called
from Perl_load_module_nocontext()), the third argument, ver, is
evaluated in boolean context to check if a specific version of the
module that is to be loaded has been specified. So, if 'ver' may not be
NULL, there is no way to specify that no particular version of the
module is required.

A quick grep reveals that NULL is commonly used as a third argument to
load_module() in the perl sources as well, so I don't think that this
__attribute__nonnull__ is what people really want and I suggest to
simply remove it again.

Any comments are welcome. If you do not agree with me, I guess, I can
simply work around this by passing newSViv(0) as a third argument. I'm
currently not sure though, if modules which do not provide any version
information are still handled correctly then.

Thanks for the pointer.

Cheers,
Sebastian

PS: collectd builds fine with perl 5.10 if I work around this issue.

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/

Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin

Attachment: signature.asc
Description: Digital signature

Reply via email to