From 88ed1ddafd1f3cdf8201f453f06ddde98c868bb8 Mon Sep 17 00:00:00 2001 From: soruh Date: Mon, 14 Aug 2023 17:42:59 +0200 Subject: [PATCH] fix Queue::last --- src/datastructures/queue.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/datastructures/queue.rs b/src/datastructures/queue.rs index 29f0e19..5cdfdbd 100644 --- a/src/datastructures/queue.rs +++ b/src/datastructures/queue.rs @@ -24,6 +24,7 @@ impl Slabable fo } } +// TODO: make this return the bare Queue to avoid additional allocations impl Queue { pub fn new(transaction: &mut TransactionHandle) -> FilePointer> { let (queue, data) = transaction.allocate(); @@ -276,7 +277,13 @@ impl FilePointer } pub fn last(self, reader: &impl ReaderTrait) -> Option { - self.get(reader, self.length(reader) - 1) + let length = self.length(reader); + + if length == 0 { + None + } else { + self.get(reader, length - 1) + } } pub fn length(self, reader: &impl ReaderTrait) -> u64 {