summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/util/u_queue.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/util/u_queue.c b/src/util/u_queue.c
index ca72968053a..47b8dcd407c 100644
--- a/src/util/u_queue.c
+++ b/src/util/u_queue.c
@@ -647,6 +647,13 @@ util_queue_finish(struct util_queue *queue)
* wait for it exclusively.
*/
mtx_lock(&queue->finish_lock);
+
+ /* The number of threads can be changed to 0, e.g. by the atexit handler. */
+ if (!queue->num_threads) {
+ mtx_unlock(&queue->finish_lock);
+ return;
+ }
+
fences = malloc(queue->num_threads * sizeof(*fences));
util_barrier_init(&barrier, queue->num_threads);