From e5fd0ba6e32a7166d72318f4e277136b8f6a0ade Mon Sep 17 00:00:00 2001 From: Kyle Lemons Date: Sun, 22 Jul 2012 23:36:03 -0700 Subject: [PATCH] Fix double free issues --- usb/.iso.go.swp | Bin 0 -> 12288 bytes usb/device.go | 4 ---- usb/iso.c | 16 ++++++++-------- usb/iso.go | 3 --- usb/usb.go | 4 ---- 5 files changed, 8 insertions(+), 19 deletions(-) create mode 100644 usb/.iso.go.swp diff --git a/usb/.iso.go.swp b/usb/.iso.go.swp new file mode 100644 index 0000000000000000000000000000000000000000..00f2895b185c20582b3d13331109c7a6a113134e GIT binary patch literal 12288 zcmeI2?`s@I7{{k7+UpM$eWB=^$(6?4>t**YEor?bmh=*7?T^G zo@c(#GtVSs8l@xq57C{*c7o5{guMFwrpW^bUb}VIMM4&qJSHBm^@(_Ban=f=H9DRW z1DXz7G`+yKJTnSyv*q&nxMA2q+Z3%HYX^R0wt_fnm;yHnj8?G5z^Yj(pcJ^d0x@q6 z?AlDW50*=!$lurGQdEDWDWk3Md7X0!o4Zlmfi7jy#JQ-IC5~ zF}ZPzopolmbctrGQdEDWDWk3Md7X0!o2@p#qje$jRFXIeI&s$N&Gc zzyGh@MaWg~Gx!o*0`Gx$!CT-wI163^r$G$bzy=n08axL2z%Ag{I|=y(Tmv72cfjl5 zD5!x+FaaI_>%rHX3Hcm+20jJn!7;E19tYdN@0$qu4SWJFfakzza0JYNKJdjxLf!zU zfD0U8gDEfuhJXeh1owmcz-F)!Yyej`5b_oH0GtCagBQUWa1iu?A9I9!1l|W1z}w(F zcoWpY3@C#?*Awy+xB@PMv)~orfxTb^7@!EYf%V|>9fW)bz6IZa7k~$5!BfBle;{^O zz-90QxCA}~=fD~8JcxjZ@geXKSOID(g z;4BwzF~jn3{%tz6{0QxM-i&>lVwU!N82C8(Ru_}i7%ed0=>!m=NHGaIJJ(p^tVmOP z@@kC5ID6*?zD_mS5n=?P4k1XF(5^>vRl{=|I8j$`hK$v5VlT1I4Ph+xLF2TL`K8m; zZ857LTs2~rDg_hC(k_=9U8IwW{Xp?wtKo#MX|5gqu{~wZ2cjG z(n}3t@dNmitN=d{l2(l*Wm5%`ltj}oEeVBF*|G!@{bQ+DlEKtWa_W%ld2WN zF2%$Icl}lx-<#x6?-E&^vfY^_GCUOpD+ke`_Ppg&oGp!QegXo>G?|^l6y>9On$8`| zUSPcLu*eSG4i8YkWUVNy?wF-K;Y%Gxvouc)^rkmY>jiwOP_g!k&|hW@6+gwD@TMZt zIudunVp5}UCs%oYW&kTOcTz{3a#gE?(I8siiMuHCg&0&1iUJj5tMI~Ko^39d4BMC#7Q&Lq7mFsd2(;qB6JXE5lNy|HjN@(qR1FgGc%b>gr?idtX zfFE(HVLveG461c%yoKy*TgSVyq%M+;?n!GbL|)l2^< literal 0 HcmV?d00001 diff --git a/usb/device.go b/usb/device.go index 7abf63b..7f1104f 100644 --- a/usb/device.go +++ b/usb/device.go @@ -7,7 +7,6 @@ import ( "log" "fmt" "reflect" - "runtime" "sync" "time" "unsafe" @@ -45,9 +44,6 @@ func newDevice(handle *C.libusb_device_handle, desc *Descriptor) *Device { claimed: make(map[uint8]int, ifaces), } - // This doesn't seem to actually get called - runtime.SetFinalizer(d, (*Device).Close) - return d } diff --git a/usb/iso.c b/usb/iso.c index 25913c8..57b09a1 100644 --- a/usb/iso.c +++ b/usb/iso.c @@ -28,20 +28,20 @@ void print_xfer(struct libusb_transfer *xfer) { int i; printf("Transfer:\n"); - //printf(" dev_handle: %p\n", xfer->dev_handle); - //printf(" flags: %08x\n", xfer->flags); + printf(" dev_handle: %p\n", xfer->dev_handle); + printf(" flags: %08x\n", xfer->flags); 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(" status: %x\n", xfer->status); - printf(" length: %d (%d)\n", xfer->length, xfer->actual_length); - //printf(" callback: %p\n", xfer->callback); - //printf(" user_data: %p\n", xfer->user_data); - //printf(" buffer: %p\n", xfer->buffer); + printf(" length: %d (act: %d)\n", xfer->length, xfer->actual_length); + printf(" callback: %p\n", xfer->callback); + printf(" user_data: %p\n", xfer->user_data); + printf(" buffer: %p\n", xfer->buffer); printf(" num_iso_pkts: %d\n", xfer->num_iso_packets); printf(" packets:\n"); 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].actual_length, xfer->iso_packet_desc[i].status); diff --git a/usb/iso.go b/usb/iso.go index eda5e53..6e2abb9 100644 --- a/usb/iso.go +++ b/usb/iso.go @@ -11,7 +11,6 @@ import ( "log" "fmt" "reflect" - "runtime" "time" "unsafe" ) @@ -62,8 +61,6 @@ func (end *endpoint) allocTransfer() *Transfer { buf: buf, } - runtime.SetFinalizer(t, (*Transfer).Close) - return t } diff --git a/usb/usb.go b/usb/usb.go index 3df8bcc..56d13b8 100644 --- a/usb/usb.go +++ b/usb/usb.go @@ -7,7 +7,6 @@ import "C" import ( "log" "reflect" - "runtime" "unsafe" ) @@ -44,9 +43,6 @@ func NewContext() *Context { } }() - // This doesn't seem to actually get called. Sigh. - runtime.SetFinalizer(c, (*Context).Close) - return c }