Fix GC race condition with callback pointer

This commit is contained in:
Kyle Lemons
2012-07-25 00:40:54 -07:00
parent 1723f5a08d
commit 8d73a5775d

View File

@@ -45,8 +45,6 @@ func (end *endpoint) allocTransfer() *Transfer {
xfer.length = C.int(len(buf)) xfer.length = C.int(len(buf))
xfer.num_iso_packets = iso_packets xfer.num_iso_packets = iso_packets
xfer.user_data = (unsafe.Pointer)(&done)
C.libusb_set_iso_packet_lengths(xfer, packet_size) C.libusb_set_iso_packet_lengths(xfer, packet_size)
pkts := *(*[]C.struct_libusb_packet_descriptor)(unsafe.Pointer(&reflect.SliceHeader{ pkts := *(*[]C.struct_libusb_packet_descriptor)(unsafe.Pointer(&reflect.SliceHeader{
Data: uintptr(unsafe.Pointer(&xfer.iso_packet_desc)), Data: uintptr(unsafe.Pointer(&xfer.iso_packet_desc)),
@@ -60,6 +58,7 @@ func (end *endpoint) allocTransfer() *Transfer {
done: done, done: done,
buf: buf, buf: buf,
} }
xfer.user_data = (unsafe.Pointer)(&t.done)
return t return t
} }