diff options
-rw-r--r-- | src/libopenusb1-glue.c | 4 | ||||
-rw-r--r-- | src/libusb-glue.c | 4 | ||||
-rw-r--r-- | src/libusb1-glue.c | 4 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/libopenusb1-glue.c b/src/libopenusb1-glue.c index 294c427..8dd9e06 100644 --- a/src/libopenusb1-glue.c +++ b/src/libopenusb1-glue.c @@ -1361,6 +1361,10 @@ ptp_usb_getdata(PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler) { if (putfunc_ret != PTP_RC_OK) return putfunc_ret; + /* Nothing more left to read*/ + if (rlen == usbdata.length) + return PTP_RC_OK; + /* stuff data directly to passed data handler */ while (1) { unsigned long readdata; diff --git a/src/libusb-glue.c b/src/libusb-glue.c index 3c1b023..b770163 100644 --- a/src/libusb-glue.c +++ b/src/libusb-glue.c @@ -1349,6 +1349,10 @@ ptp_usb_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler) if (putfunc_ret != PTP_RC_OK) return putfunc_ret; + /* Nothing more left to read*/ + if (rlen == usbdata.length) + return PTP_RC_OK; + /* stuff data directly to passed data handler */ while (1) { unsigned long readdata; diff --git a/src/libusb1-glue.c b/src/libusb1-glue.c index ffffa01..0992b2a 100644 --- a/src/libusb1-glue.c +++ b/src/libusb1-glue.c @@ -1453,6 +1453,10 @@ ptp_usb_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler) if (putfunc_ret != PTP_RC_OK) return ptp_read_cancel_func(params, ptp->Transaction_ID); + /* Nothing more left to read*/ + if (rlen == usbdata.length) + return PTP_RC_OK; + /* stuff data directly to passed data handler */ while (1) { unsigned long readdata; |