From 12b557abe18c0cd8cf9c9eb4a643b12e8969384d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Fri, 12 Jan 2024 10:25:35 -0500 Subject: [PATCH] Skip the CAS on new_pos < 0 --- libc/runtime/zipos-seek.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libc/runtime/zipos-seek.c b/libc/runtime/zipos-seek.c index d12efc694..942700960 100644 --- a/libc/runtime/zipos-seek.c +++ b/libc/runtime/zipos-seek.c @@ -66,8 +66,8 @@ Restart: default: new_pos = einval(); } - } while (!LIKELY(atomic_compare_exchange_weak_explicit( - &h->pos, &pos, new_pos < 0 ? pos : new_pos, memory_order_release, - memory_order_relaxed))); + } while (new_pos >= 0 && !LIKELY(atomic_compare_exchange_weak_explicit( + &h->pos, &pos, new_pos, memory_order_release, + memory_order_relaxed))); return new_pos; }