XS(XS_Device__USB_libusb_get_descriptor) { dXSARGS; if (items != 5) Perl_croak(aTHX_ "Usage: Device::USB::libusb_get_descriptor(dev, 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); }