> -----Original Message-----
> From: Ken Williams [mailto:[EMAIL PROTECTED]
> Sent: Thursday, April 01, 2004 4:47 PM
> To: 00056312
> Cc: [EMAIL PROTECTED]
> Subject: Re: Array problems
>
> That should be array_pass(3, [EMAIL PROTECTED]).
>
> Or you should just get the array size using av_len().
After I wrote this I tried it out, and there seems to be something wrong
with array-ref argument passing. Observe the following test script:
------------------------------------------------
use Inline C;
@inputArray = ( "134.3", "2.224", "3.343");
array_pass([EMAIL PROTECTED]);
__END__
__C__
int array_pass (SV* array_ref) {
AV *av_ptr;
int n;
if ( !SvROK(array_ref) || SvTYPE(SvRV(array_ref)) != SVt_PVAV )
croak("Argument must be array reference");
av_ptr = (AV*) SvRV(array_ref);
printf("Number of elements: %d\n", 1+sv_len(av_ptr));
}
------------------------------------------------
The output, using Inline 0.44 and perl 5.6.1, is:
Number of elements: 1
which is wrong. A similar experiment in XS seems to work fine.
-Ken