Skip to content

Commit af96d58

Browse files
author
Andrea Guzzo
committed
fixed a memory leak triggered by a fault path
the node was overretained
1 parent 19b524f commit af96d58

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

src/queue.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,11 +426,13 @@ int queue_push_right(queue_t *q, void *value)
426426
retain_ref(next->refcnt, ATOMIC_READ(next->node));
427427
queue_entry_t *prev = get_node_ptr(deref_link(next->refcnt, &next->prev));
428428
if (!prev) {
429+
release_ref(next->refcnt, ATOMIC_READ(next->node));
429430
destroy_entry(entry);
430431
return -1;
431432
}
432433
while (1) {
433434
if (ATOMIC_READ(prev->next) != ATOMIC_READ(next->node)) {
435+
release_ref(prev->refcnt, ATOMIC_READ(prev->node));
434436
prev = help_insert(prev, next);
435437
continue;
436438
}

0 commit comments

Comments
 (0)