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.