Skip to content

Commit 0291b0c

Browse files
committed
use atomics in critnib find_*
1 parent 0f540bc commit 0291b0c

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/critnib/critnib.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,9 @@ find_predecessor(struct critnib_node *__restrict n) {
524524
while (1) {
525525
int nib;
526526
for (nib = NIB; nib >= 0; nib--) {
527-
if (n->child[nib]) {
527+
struct critnib_node *m;
528+
utils_atomic_load_acquire_ptr((void **)&n->child[nib], (void **)&m);
529+
if (m) {
528530
break;
529531
}
530532
}
@@ -533,7 +535,7 @@ find_predecessor(struct critnib_node *__restrict n) {
533535
return NULL;
534536
}
535537

536-
n = n->child[nib];
538+
utils_atomic_load_acquire_ptr((void **)&n->child[nib], (void **)&n);
537539
if (is_leaf(n)) {
538540
return to_leaf(n);
539541
}

0 commit comments

Comments
 (0)