X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=src%2Fftdi.c;h=41496ee1312e5337f25adeaaabc7510908458dd6;hb=ce3940810901906eb00d67fe259d5540a9008630;hp=d4e09ff66f6ab4c6d227576162884ae6617cead0;hpb=1423b35ca644b152bbe28142f3661e1d4bd413ff;p=libftdi diff --git a/src/ftdi.c b/src/ftdi.c index d4e09ff..41496ee 100644 --- a/src/ftdi.c +++ b/src/ftdi.c @@ -643,12 +643,12 @@ int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int product, { if (libusb_get_string_descriptor_ascii(ftdi->usb_dev, desc.iProduct, (unsigned char *)string, sizeof(string)) < 0) { - libusb_close (ftdi->usb_dev); + ftdi_usb_close_internal (ftdi); ftdi_error_return_free_device_list(-8, "unable to fetch product description", devs); } if (strncmp(string, description, sizeof(string)) != 0) { - libusb_close (ftdi->usb_dev); + ftdi_usb_close_internal (ftdi); continue; } } @@ -1956,7 +1956,7 @@ int ftdi_poll_modem_status(struct ftdi_context *ftdi, unsigned short *status) if (libusb_control_transfer(ftdi->usb_dev, FTDI_DEVICE_IN_REQTYPE, SIO_POLL_MODEM_STATUS_REQUEST, 0, ftdi->index, (unsigned char *)usb_val, 2, ftdi->usb_read_timeout) != 2) ftdi_error_return(-1, "getting modem status failed"); - *status = (usb_val[1] << 8) | usb_val[0]; + *status = (usb_val[1] << 8) | (usb_val[0] & 0xFF); return 0; }