From ee0a4d1755f36dbba42e28053d4aa6893b898342 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 26 Aug 2026 16:54:26 -0400 Subject: [PATCH] Fix IO_Event_List_empty() condition --- ext/io/event/list.h | 2 +- releases.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/io/event/list.h b/ext/io/event/list.h index a50f663e..635b7b1a 100644 --- a/ext/io/event/list.h +++ b/ext/io/event/list.h @@ -90,7 +90,7 @@ inline static size_t IO_Event_List_memory_size(const struct IO_Event_List *list) // Return true if the list is empty. inline static int IO_Event_List_empty(const struct IO_Event_List *list) { - return list->head == list->tail; + return list->head == list; } // Enumerate all items in the list, assuming the list will not be modified during iteration. diff --git a/releases.md b/releases.md index 25ca2631..802b7ac2 100644 --- a/releases.md +++ b/releases.md @@ -1,5 +1,9 @@ # Releases +## Unreleased + + - Fix the `URing` completion free-list empty check so its sole entry can be reused instead of unnecessarily allocating a new completion. + ## v1.20.0 - Add compatibility with Ruby 4.1's fiber scheduler interface version 4. Buffered IO operations now use `(offset, length)`, perform a single transfer of at most `length` bytes, return short transfers directly, and report `-EAGAIN` without waiting. Earlier Ruby versions retain the existing minimum-progress behavior.