Fix double free issues

This commit is contained in:
Kyle Lemons
2012-07-22 23:36:03 -07:00
parent acb3aed8c3
commit e5fd0ba6e3
5 changed files with 8 additions and 19 deletions

BIN
usb/.iso.go.swp Normal file

Binary file not shown.

View File

@@ -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
} }

View File

@@ -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);

View File

@@ -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
} }

View File

@@ -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
} }