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)
In reply to Re: Problem trying to use Device::USB
by almut
in thread Problem trying to use Device::USB
by scliffe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |