BUG/MINOR: shctx: do not look for available blocks when the first one is enough
authorWilly Tarreau <w@1wt.eu>
Fri, 19 Nov 2021 16:42:49 +0000 (17:42 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 19 Nov 2021 18:25:13 +0000 (19:25 +0100)
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

index 7567645..f675d81 100644 (file)
@@ -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;
                        }
                }