Fix double free issues
This commit is contained in:
BIN
usb/.iso.go.swp
Normal file
BIN
usb/.iso.go.swp
Normal file
Binary file not shown.
@@ -7,7 +7,6 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
@@ -45,9 +44,6 @@ func newDevice(handle *C.libusb_device_handle, desc *Descriptor) *Device {
|
|||||||
claimed: make(map[uint8]int, ifaces),
|
claimed: make(map[uint8]int, ifaces),
|
||||||
}
|
}
|
||||||
|
|
||||||
// This doesn't seem to actually get called
|
|
||||||
runtime.SetFinalizer(d, (*Device).Close)
|
|
||||||
|
|
||||||
return d
|
return d
|
||||||
}
|
}
|
||||||
|
|
||||||
|
16
usb/iso.c
16
usb/iso.c
@@ -28,20 +28,20 @@ void print_xfer(struct libusb_transfer *xfer) {
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
printf("Transfer:\n");
|
printf("Transfer:\n");
|
||||||
//printf(" dev_handle: %p\n", xfer->dev_handle);
|
printf(" dev_handle: %p\n", xfer->dev_handle);
|
||||||
//printf(" flags: %08x\n", xfer->flags);
|
printf(" flags: %08x\n", xfer->flags);
|
||||||
printf(" endpoint: %x\n", xfer->endpoint);
|
printf(" endpoint: %x\n", xfer->endpoint);
|
||||||
//printf(" type: %x\n", xfer->type);
|
printf(" type: %x\n", xfer->type);
|
||||||
printf(" timeout: %dms\n", xfer->timeout);
|
printf(" timeout: %dms\n", xfer->timeout);
|
||||||
printf(" status: %x\n", xfer->status);
|
printf(" status: %x\n", xfer->status);
|
||||||
printf(" length: %d (%d)\n", xfer->length, xfer->actual_length);
|
printf(" length: %d (act: %d)\n", xfer->length, xfer->actual_length);
|
||||||
//printf(" callback: %p\n", xfer->callback);
|
printf(" callback: %p\n", xfer->callback);
|
||||||
//printf(" user_data: %p\n", xfer->user_data);
|
printf(" user_data: %p\n", xfer->user_data);
|
||||||
//printf(" buffer: %p\n", xfer->buffer);
|
printf(" buffer: %p\n", xfer->buffer);
|
||||||
printf(" num_iso_pkts: %d\n", xfer->num_iso_packets);
|
printf(" num_iso_pkts: %d\n", xfer->num_iso_packets);
|
||||||
printf(" packets:\n");
|
printf(" packets:\n");
|
||||||
for (i = 0; i < xfer->num_iso_packets; i++) {
|
for (i = 0; i < xfer->num_iso_packets; i++) {
|
||||||
printf(" [%04d] %d (%d) %x\n", i,
|
printf(" [%04d] %d (act: %d) %x\n", i,
|
||||||
xfer->iso_packet_desc[i].length,
|
xfer->iso_packet_desc[i].length,
|
||||||
xfer->iso_packet_desc[i].actual_length,
|
xfer->iso_packet_desc[i].actual_length,
|
||||||
xfer->iso_packet_desc[i].status);
|
xfer->iso_packet_desc[i].status);
|
||||||
|
@@ -11,7 +11,6 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
@@ -62,8 +61,6 @@ func (end *endpoint) allocTransfer() *Transfer {
|
|||||||
buf: buf,
|
buf: buf,
|
||||||
}
|
}
|
||||||
|
|
||||||
runtime.SetFinalizer(t, (*Transfer).Close)
|
|
||||||
|
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,7 +7,6 @@ import "C"
|
|||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -44,9 +43,6 @@ func NewContext() *Context {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// This doesn't seem to actually get called. Sigh.
|
|
||||||
runtime.SetFinalizer(c, (*Context).Close)
|
|
||||||
|
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user