From cafe15c743f6bc1a9e624939e1851f215645e4f2 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 19 Nov 2021 17:42:49 +0100 Subject: [PATCH] BUG/MINOR: shctx: do not look for available blocks when the first one is enough In shctx_row_reserve_hot() we only leave if we've found the exact requested size instead of at least as large, as is documented. This results in extra lookups and free calls in the avail loop while it is not needed, and participates to seeing a negative data_len early as spotted in previous bugs. It doesn't seem to have any other impact however, but it's better to backport it to stable branches. --- src/shctx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shctx.c b/src/shctx.c index 7567645a1..f675d8142 100644 --- a/src/shctx.c +++ b/src/shctx.c @@ -61,7 +61,7 @@ struct shared_block *shctx_row_reserve_hot(struct shared_context *shctx, return last ? last : first; } else { data_len -= remain; - if (!data_len) + if (data_len <= 0) return last ? last : first; } }