From 490c3b2dda9558470bc0702c5334d16391b4b08b Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Wed, 24 Jan 2024 17:56:09 +0200 Subject: [PATCH] core: Optimize read_varint() --- core/sqlite3_ondisk.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/core/sqlite3_ondisk.rs b/core/sqlite3_ondisk.rs index 02a6a4aab..2aba6643b 100644 --- a/core/sqlite3_ondisk.rs +++ b/core/sqlite3_ondisk.rs @@ -410,10 +410,16 @@ pub fn read_value(buf: &[u8], serial_type: SerialType) -> Result<(Value, usize)> fn read_varint(buf: &[u8]) -> Result<(u64, usize)> { let mut v: u64 = 0; for i in 0..8 { - let c = buf.get(i).ok_or(anyhow!("Invalid varint"))?; - v = (v << 7) + (c & 0x7f) as u64; - if (c & 0x80) == 0 { - return Ok((v, i + 1)); + match buf.get(i) { + Some(c) => { + v = (v << 7) + (c & 0x7f) as u64; + if (c & 0x80) == 0 { + return Ok((v, i + 1)); + } + } + None => { + return Err(anyhow!("Invalid varint")); + } } } v = (v << 8) + buf[8] as u64;