On Tue, Jan 21, 2014 at 11:48 PM,  <[email protected]> wrote:
>
>
> -----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]

Thanks, Rob.  Does Types.pm for the 32bit perl have a
longlong section with a packstr of 'q*'?  And could you
send the 'perl  -V' output for reference.  If the perl doesn't
support longlong data, then we should probably be
generating an error for longlong use.

In this case, it would probably be simpler to conditionalize
the test and not use 'longlong' unless the perl has support
for it (e.g., ivsize is 8).

>>> 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