-----Original Message----- From: Chris Marshall

t/attribPDL.t ..... Invalid type 'q' in pack at Basic/Core/Core.pm.PL (i.e.
PDL::Core.pm) line 1318.
# Looks like your test exited with 255 before it could output anything.
t/attribPDL.t ..... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 13/13 subtests

This looks like a bug in the longlong support since if the perl does not support 64bit ints, then it doesn't support the qQ pack options.
Maybe you could track this down.

Line 1318 of Basic/Core/Core.pm.pl (PDL-2.007) is found in sub PDL::new() :

${$new->get_dataref}     = pack( $pack[$new->get_datatype], $value );

The line of code in t/attribPDL.t that generates the error is:

$dataset->attrSet('IDLONG'=>pdl(longlong,123456789123456784));

And the simplest demo of the error is:

C:\>perl -MPDL -e "$x=pdl(longlong, 1);"
Invalid type 'q' in pack at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 1318.

The following, however, are permitted:

C:\>perl -MPDL -le "$x=pdl(longlong, [1]);print $x"
[1]

C:\>perl -MPDL -le "$x=pdl(longlong, [123456789123456784]);print $x;"
[1.23456789123457e+017]

HDF5.xs:2164:9: warning: overflow in implicit constant conversion
[-Woverflow]

It looks like this value should be a size_t type rather than int.
If I make the change it seems to work here.  I've attached a
patchfile with that change.  Does it work?

Yes.
I actually misreported the warning. Turns out it doesn't happen on 64-bit-integer builds of 32-bit perl; happens only with 64-bit builds of perl.
So size_t seems to be the correct type.

Cheers,
Rob

_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to