MINOR: chunks: Make sure trash_size is only set once.
The trash_size variable is shared by all threads, and is set by all threads,
when alloc_trash_buffers() is called. To make sure it's set only once,
to silence a harmless data race, use a CAS to set it, and only set it if it
was 0.
diff --git a/src/chunk.c b/src/chunk.c
index 8e77858..344b28d 100644
--- a/src/chunk.c
+++ b/src/chunk.c
@@ -68,8 +68,9 @@
*/
static int alloc_trash_buffers(int bufsize)
{
+ int old = 0;
chunk_init(&trash, my_realloc2(trash.area, bufsize), bufsize);
- trash_size = bufsize;
+ HA_ATOMIC_CAS(&trash_size, &old, bufsize);
trash_buf1 = (char *)my_realloc2(trash_buf1, bufsize);
trash_buf2 = (char *)my_realloc2(trash_buf2, bufsize);
return trash.area && trash_buf1 && trash_buf2;