From deecaafbfb0bc42a68e0d1ef75770d449a204deb Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Mon, 10 Jul 2023 17:19:05 +0200 Subject: util.datamanager: Fix indexing first item if not at the very start If the first item does not start at position 0 then the index function produces a phantom first entry covering position zero until where the real first item starts. When using the index, this would make it either appear as the first item was missing or cause an off-by-one issue with remaining items. --- util/datamanager.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'util/datamanager.lua') diff --git a/util/datamanager.lua b/util/datamanager.lua index a124b3dc..a00b9014 100644 --- a/util/datamanager.lua +++ b/util/datamanager.lua @@ -329,7 +329,7 @@ local function build_list_index(username, host, datastore, items) return fh, err, errno; end local prev_pos = 0; -- position before reading - local last_item_start = 0; + local last_item_start = nil; if items and items[1] then local last_item = items[#items]; @@ -340,7 +340,7 @@ local function build_list_index(username, host, datastore, items) for line in fh:lines() do if line:sub(1, 4) == "item" then - if prev_pos ~= 0 then + if prev_pos ~= 0 and last_item_start then t_insert(items, { start = last_item_start; length = prev_pos - last_item_start }); end last_item_start = prev_pos -- cgit v1.2.3