From 787f6a5fafd266f1fe13dda4374525d6847a38c8 Mon Sep 17 00:00:00 2001 From: azw Date: Sat, 13 May 2023 12:46:01 +0000 Subject: [PATCH] 1 --- a8/fifobuffer.cc | 15 +++++++-------- a8/fifobuffer.h | 1 + 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/a8/fifobuffer.cc b/a8/fifobuffer.cc index 4a26277..dd4d8a5 100644 --- a/a8/fifobuffer.cc +++ b/a8/fifobuffer.cc @@ -45,19 +45,18 @@ namespace a8 } else { size_t index = GetIndex(real_len); - list_head* free_node = nullptr; + BufHead* buf_head = nullptr; { lock_.lock(); - free_node = &free_list_[index]; - if (list_empty(free_node)) { - free_node = nullptr; - } else { - list_del(free_node); + list_head* head = &free_list_[index]; + if (!list_empty(head)) { + buf_head = list_first_entry(head, BufHead, entry); + list_del(&buf_head->entry); } lock_.unlock(); } - if (free_node) { - return (char*)free_node + sizeof(BufHead); + if (buf_head) { + return (char*)buf_head + sizeof(BufHead); } } } diff --git a/a8/fifobuffer.h b/a8/fifobuffer.h index e9b4ec9..2455925 100644 --- a/a8/fifobuffer.h +++ b/a8/fifobuffer.h @@ -23,6 +23,7 @@ namespace a8 char* buf_ = nullptr; int buf_len_ = 0; + std::atomic offset_ = 0; a8::SpinLock lock_; std::array free_list_;