aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2026-02-13 17:46:09 +0100
committerGitHub <noreply@github.com>2026-02-13 17:46:09 +0100
commitfbfc45a12504666c17b83979f419d67ede9e629f (patch)
tree79176c4f0d2b5cb5dd8bee9234ee530bee0a7ed2
parent6386b395de7e0e537e092601ff0ac4d353806ebb (diff)
parent6fc3a8fb2a09b4c05d4c2c3d3437c04bdcad8baf (diff)
Merge pull request #6271 from oxSleep/fix-pool-container-type-error
[core:container/pool] Fix pool parapoly type error when using multiple Pool types
-rw-r--r--core/container/pool/pool.odin34
1 files changed, 18 insertions, 16 deletions
diff --git a/core/container/pool/pool.odin b/core/container/pool/pool.odin
index 55ea57d55..34a9e0683 100644
--- a/core/container/pool/pool.odin
+++ b/core/container/pool/pool.odin
@@ -113,28 +113,30 @@ _set_next :: proc(p: ^Pool($T), elem: ^T, next: ^T) {
(^^T)(uintptr(elem) + p.link_off)^ = next
}
-@(disabled=.Address not_in ODIN_SANITIZER_FLAGS)
_poison_elem :: proc(p: ^Pool($T), elem: ^T) {
- if p.link_off > 0 {
- sanitizer.address_poison_rawptr(elem, int(p.link_off))
- }
+ when .Address in ODIN_SANITIZER_FLAGS {
+ if p.link_off > 0 {
+ sanitizer.address_poison_rawptr(elem, int(p.link_off))
+ }
- len := size_of(T) - p.link_off - size_of(rawptr)
- if len > 0 {
- ptr := rawptr(uintptr(elem) + p.link_off + size_of(rawptr))
- sanitizer.address_poison_rawptr(ptr, int(len))
+ len := size_of(T) - p.link_off - size_of(rawptr)
+ if len > 0 {
+ ptr := rawptr(uintptr(elem) + p.link_off + size_of(rawptr))
+ sanitizer.address_poison_rawptr(ptr, int(len))
+ }
}
}
-@(disabled=.Address not_in ODIN_SANITIZER_FLAGS)
_unpoison_elem :: proc(p: ^Pool($T), elem: ^T) {
- if p.link_off > 0 {
- sanitizer.address_unpoison_rawptr(elem, int(p.link_off))
- }
+ when .Address in ODIN_SANITIZER_FLAGS {
+ if p.link_off > 0 {
+ sanitizer.address_unpoison_rawptr(elem, int(p.link_off))
+ }
- len := size_of(T) - p.link_off - size_of(rawptr)
- if len > 0 {
- ptr := rawptr(uintptr(elem) + p.link_off + size_of(rawptr))
- sanitizer.address_unpoison_rawptr(ptr, int(len))
+ len := size_of(T) - p.link_off - size_of(rawptr)
+ if len > 0 {
+ ptr := rawptr(uintptr(elem) + p.link_off + size_of(rawptr))
+ sanitizer.address_unpoison_rawptr(ptr, int(len))
+ }
}
}