summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-structr/item.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-10-02 10:58:20 +0000
committerLibravatar GitHub <noreply@github.com>2024-10-02 10:58:20 +0000
commitc17abea92162f0ac1ccfff4223e26eac431c1198 (patch)
treeac9809f327136590a5c239c8f9594c1fea1ad989 /vendor/codeberg.org/gruf/go-structr/item.go
parent[chore]: Bump go.uber.org/automaxprocs from 1.5.3 to 1.6.0 (#3376) (diff)
downloadgotosocial-c17abea92162f0ac1ccfff4223e26eac431c1198.tar.xz
update go-structr to v0.8.11 (#3380)
Diffstat (limited to 'vendor/codeberg.org/gruf/go-structr/item.go')
-rw-r--r--vendor/codeberg.org/gruf/go-structr/item.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/vendor/codeberg.org/gruf/go-structr/item.go b/vendor/codeberg.org/gruf/go-structr/item.go
index 3191f2beb..6178e18e3 100644
--- a/vendor/codeberg.org/gruf/go-structr/item.go
+++ b/vendor/codeberg.org/gruf/go-structr/item.go
@@ -24,18 +24,22 @@ var indexed_item_pool sync.Pool
func new_indexed_item() *indexed_item {
v := indexed_item_pool.Get()
if v == nil {
- v = new(indexed_item)
+ i := new(indexed_item)
+ i.elem.data = unsafe.Pointer(i)
+ v = i
}
item := v.(*indexed_item)
- ptr := unsafe.Pointer(item)
- item.elem.data = ptr
return item
}
// free_indexed_item releases the indexed_item.
func free_indexed_item(item *indexed_item) {
- item.elem.data = nil
- item.indexed = item.indexed[:0]
+ if len(item.indexed) > 0 ||
+ item.elem.next != nil ||
+ item.elem.prev != nil {
+ should_not_reach()
+ return
+ }
item.data = nil
indexed_item_pool.Put(item)
}
@@ -50,7 +54,7 @@ func (i *indexed_item) drop_index(entry *index_entry) {
continue
}
- // Move all index entries down + reslice.
+ // Reslice index entries minus 'x'.
_ = copy(i.indexed[x:], i.indexed[x+1:])
i.indexed[len(i.indexed)-1] = nil
i.indexed = i.indexed[:len(i.indexed)-1]