summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--handles.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/handles.go b/handles.go
index 1cbf6eb..ec62a48 100644
--- a/handles.go
+++ b/handles.go
@@ -11,23 +11,23 @@ type HandleList struct {
// stores the Go pointers
handles []interface{}
// indicates which indices are in use
- set map[uintptr]bool
+ set map[int]bool
}
func NewHandleList() *HandleList {
return &HandleList{
handles: make([]interface{}, 5),
- set: make(map[uintptr]bool),
+ set: make(map[int]bool),
}
}
// findUnusedSlot finds the smallest-index empty space in our
// list. You must only run this function while holding a write lock.
-func (v *HandleList) findUnusedSlot() uintptr {
+func (v *HandleList) findUnusedSlot() int {
for i := 1; i < len(v.handles); i++ {
- isUsed := v.set[uintptr(i)]
+ isUsed := v.set[i]
if !isUsed {
- return uintptr(i)
+ return i
}
}
@@ -36,7 +36,7 @@ func (v *HandleList) findUnusedSlot() uintptr {
slot := len(v.handles)
v.handles = append(v.handles, nil)
- return uintptr(slot)
+ return slot
}
// Track adds the given pointer to the list of pointers to track and
@@ -51,12 +51,12 @@ func (v *HandleList) Track(pointer interface{}) unsafe.Pointer {
v.Unlock()
- return unsafe.Pointer(slot)
+ return unsafe.Pointer(&slot)
}
// Untrack stops tracking the pointer given by the handle
func (v *HandleList) Untrack(handle unsafe.Pointer) {
- slot := uintptr(handle)
+ slot := *(*int)(handle)
v.Lock()
@@ -68,7 +68,7 @@ func (v *HandleList) Untrack(handle unsafe.Pointer) {
// Get retrieves the pointer from the given handle
func (v *HandleList) Get(handle unsafe.Pointer) interface{} {
- slot := uintptr(handle)
+ slot := *(*int)(handle)
v.RLock()