We cannot dereference tpriv after calling
usbi_handle_transfer_cancellation() because that function may invoke
the user-supplied callback which may free the transfer.
Copyright (c) 2001 Johannes Erdfelt <johannes@erdfelt.com>
Other contributors:
+Artem Egorkine
David Engraf
Rob Walker
Vasily Khoruzhick
if (tpriv->awaiting_reap == 0 && tpriv->awaiting_discard == 0) {
usbi_dbg("CANCEL: last URB handled, reporting");
if (tpriv->reap_action == CANCELLED) {
- usbi_handle_transfer_cancellation(itransfer);
free(tpriv->urbs);
+ usbi_handle_transfer_cancellation(itransfer);
return 0;
} else if (tpriv->reap_action == COMPLETED_EARLY) {
goto out;