gh-135698: Fix Cross-interpreter Queue.full() With Negative/Default max_size (gh-135724)

We weren't handling non-positive maxsize values (including the default) properly
in Queue.full().  This change fixes that and adjusts an associated assert.
This commit is contained in:
Eric Snow 2025-06-20 14:26:32 -06:00 committed by GitHub
parent a8ec511900
commit c5ea8e8e8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 62 additions and 13 deletions

View file

@ -707,8 +707,11 @@ _queue_is_full(_queue *queue, int *p_is_full)
return err;
}
assert(queue->items.count <= queue->items.maxsize);
*p_is_full = queue->items.count == queue->items.maxsize;
assert(queue->items.maxsize <= 0
|| queue->items.count <= queue->items.maxsize);
*p_is_full = queue->items.maxsize > 0
? queue->items.count == queue->items.maxsize
: 0;
_queue_unlock(queue);
return 0;