CONTEXT_BLOCK_SIZE,
&xread,
ptp_usb->timeout);
- }
- else {
+ } else {
ret = USB_BULK_READ(ptp_usb->handle,
ptp_usb->inep,
bytes,
}
int putfunc_ret = handler->putfunc(NULL, handler->priv, xread, bytes, &written);
- if (putfunc_ret != PTP_RC_OK)
+ if (putfunc_ret != PTP_RC_OK) {
+ free(bytes);
return putfunc_ret;
+ }
ptp_usb->current_transfer_complete += xread;
curread += xread;
// Increase counters, call callback
if (ptp_usb->callback_active) {
if (ptp_usb->current_transfer_complete >= ptp_usb->current_transfer_total) {
- // send last update and disable callback.
- ptp_usb->current_transfer_complete = ptp_usb->current_transfer_total;
- ptp_usb->callback_active = 0;
+ // send last update and disable callback.
+ ptp_usb->current_transfer_complete = ptp_usb->current_transfer_total;
+ ptp_usb->callback_active = 0;
}
if (ptp_usb->current_transfer_callback != NULL) {
- int ret;
- ret = ptp_usb->current_transfer_callback(ptp_usb->current_transfer_complete,
- ptp_usb->current_transfer_total,
- ptp_usb->current_transfer_callback_data);
- if (ret != 0) {
- return PTP_ERROR_CANCEL;
- }
+ int ret;
+ ret = ptp_usb->current_transfer_callback(ptp_usb->current_transfer_complete,
+ ptp_usb->current_transfer_total,
+ ptp_usb->current_transfer_callback_data);
+ if (ret != 0) {
+ free(bytes);
+ return PTP_ERROR_CANCEL;
+ }
}
}
LIBMTP_USB_DEBUG("USB OUT==>\n");
if (ret != LIBUSB_SUCCESS) {
- free(bytes);
+ free(bytes);
return PTP_ERROR_IO;
}
LIBMTP_USB_DATA(bytes+usbwritten, xwritten, 16);
// call callback
if (ptp_usb->callback_active) {
if (ptp_usb->current_transfer_complete >= ptp_usb->current_transfer_total) {
- // send last update and disable callback.
- ptp_usb->current_transfer_complete = ptp_usb->current_transfer_total;
- ptp_usb->callback_active = 0;
+ // send last update and disable callback.
+ ptp_usb->current_transfer_complete = ptp_usb->current_transfer_total;
+ ptp_usb->callback_active = 0;
}
if (ptp_usb->current_transfer_callback != NULL) {
- int ret;
- ret = ptp_usb->current_transfer_callback(ptp_usb->current_transfer_complete,
- ptp_usb->current_transfer_total,
- ptp_usb->current_transfer_callback_data);
- if (ret != 0) {
+ int ret;
+ ret = ptp_usb->current_transfer_callback(ptp_usb->current_transfer_complete,
+ ptp_usb->current_transfer_total,
+ ptp_usb->current_transfer_callback_data);
+ if (ret != 0) {
free(bytes);
- return PTP_ERROR_CANCEL;
- }
+ return PTP_ERROR_CANCEL;
+ }
}
}
if (xwritten < towrite) /* short writes happen */