in reply to Problem trying to use Device::USB

Quick tip on debugging the Inline::C stuff (in case you aren't already aware of it):  add NOCLEAN to the generated Makefile (after perl Makefile.PL, before make). I.e.

.pm.inl: $(PERL) -Mblib -MInline=NOISY,NOCLEAN,_INSTALL_ -MDevice::USB +-e1 0.31 $(INST_ARCHLIB) ^^^^^^^

This way, the intermediately generated C code doesn't get cleaned up (in the _Inline subdir), so you can look at the respective wrapper functions — in this case (in USB.c)

XS(XS_Device__USB_libusb_get_descriptor) { dXSARGS; if (items != 5) Perl_croak(aTHX_ "Usage: Device::USB::libusb_get_descriptor(de +v, type, index, buf, size)"); { void * dev = INT2PTR(void *,SvIV(ST(0))); unsigned char type = (unsigned char)SvUV(ST(1)); unsigned char index = (unsigned char)SvUV(ST(2)); void * buf = INT2PTR(void *,SvIV(ST(3))); // <-- !! int size = (int)SvIV(ST(4)); int RETVAL; dXSTARG; RETVAL = libusb_get_descriptor(dev, type, index, buf, size); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); }

(which confirms BrowserUk's analysis)

Replies are listed 'Best First'.
Re^2: Problem trying to use Device::USB
by scliffe (Novice) on Mar 15, 2010 at 22:41 UTC

    Thanks heaps guys. Changing to a char * fixed the problem.

    I've reported this as a bug to the module's author.