Working on an Inline C module, and having problems appearing to be related to array elements not being accessible after being passed in via reference.
Wrote a test program, cut and pasted mostly from this newsgroup to isolate the problem. Program and output are as follows. Still can't get at individual array members. #!/usr/bin/perl -w use strict; use Inline C => 'DATA'; my $a = [ 1 .. 10 ]; print "array in: " . join(" ", @{$a}) . "\n"; dump_arrref($a); __DATA__ __C__ void dump_arrref(SV* arrref) { int i, n, val; AV* arr; if (!SvROK(arrref)) croak("dump_arrref did not receive a pointer"); arr = SvRV(arrref); if (SvTYPE(arr) != SVt_PVAV) croak("dump_arrref did not receive a pointer to a list"); n = av_len(arr) + 1; printf("array in C: "); for(i = 0 ; i < n ; i++) printf("%d ", SvIVx(av_shift(arr))); } Executing this produces: % perl5.8.3 inline.pl array in: 1 2 3 4 5 6 7 8 9 10 array in C: 0 0 0 0 0 0 0 0 0 0 Whats strange to me is that the SvROK, SvTYPE, and av_len functions all indicate the array is fine and as expected. However cant get SvIVx (or SvIV for that matter and I know it will do the shift twice if I use it) to return the integers in the array. Any thoughts anyone? Perl 5.8.3 SunOS dna428 5.7 Generic_106541-29 sun4u sparc SUNW,Ultra-4 Inline-0.44.tar.gz