diff options
| author | oxSleep <oxSleep@users.noreply.github.com> | 2026-02-13 16:59:22 +0100 |
|---|---|---|
| committer | oxv <oxv@noreply.localhost> | 2026-02-13 17:21:51 +0100 |
| commit | 6fc3a8fb2a09b4c05d4c2c3d3437c04bdcad8baf (patch) | |
| tree | 79176c4f0d2b5cb5dd8bee9234ee530bee0a7ed2 | |
| parent | 6386b395de7e0e537e092601ff0ac4d353806ebb (diff) | |
Use when-block for sanitizer poisoning
Replace @disabled attribute with when-statement to conditionally compile
address sanitizer poisoning in pool elements
| -rw-r--r-- | core/container/pool/pool.odin | 34 |
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)) + } } } |