From 17eb6a687cba6aadf502cbb2f7ab0f5fd7361959 Mon Sep 17 00:00:00 2001 From: azw Date: Wed, 10 May 2023 14:09:30 +0000 Subject: [PATCH] 1 --- a8/fifobuffer.cc | 14 +++++++++++++- a8/fifobuffer.h | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/a8/fifobuffer.cc b/a8/fifobuffer.cc index 1a6a9dc..3b98177 100644 --- a/a8/fifobuffer.cc +++ b/a8/fifobuffer.cc @@ -2,6 +2,11 @@ #include +struct BufHead +{ + int len = 0; +}; + namespace a8 { @@ -26,12 +31,19 @@ namespace a8 if (len <= 0) { abort(); } - unsigned int real_len = len + 4; + unsigned int real_len = len + sizeof(BufHead); } void FifoBuffer::Free(char* p) { + if (p >= buf_ && p < buf_ + buf_len_) { + if (p != buf_ + head_) { + abort(); + } + } else { + free(p); + } } } diff --git a/a8/fifobuffer.h b/a8/fifobuffer.h index ee0fb49..1b081ba 100644 --- a/a8/fifobuffer.h +++ b/a8/fifobuffer.h @@ -19,8 +19,8 @@ namespace a8 char* buf_ = nullptr; unsigned int buf_len_ = 0; - std::atomic start_ = 0; - std::atomic end_ = 0; + std::atomic head_ = 0; + std::atomic tail_ = 0; };