From b75d624938edc6d485908c7febc94c826121378f Mon Sep 17 00:00:00 2001 From: Xurkon Date: Fri, 5 Jun 2026 22:19:44 -0500 Subject: [PATCH] fix: guard unavailable quest draw thread --- Modules/Quest/AvailableQuests.lua | 4 ++++ Tests/QuestieAvailableQuests_spec.lua | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 Tests/QuestieAvailableQuests_spec.lua diff --git a/Modules/Quest/AvailableQuests.lua b/Modules/Quest/AvailableQuests.lua index 23cc8e1..f80cea2 100644 --- a/Modules/Quest/AvailableQuests.lua +++ b/Modules/Quest/AvailableQuests.lua @@ -282,6 +282,10 @@ end _DrawAvailableQuest = function(questId) NewThread(function() local quest = QuestieDB.GetQuest(questId) + if not quest then + Questie:Debug(Questie.DEBUG_LEARNER, "[AvailableQuests] Skipping unavailable quest during draw:", questId) + return + end if (not quest.tagInfoWasCached) then QuestieDB.GetQuestTagInfo(questId) -- cache to load in the tooltip diff --git a/Tests/QuestieAvailableQuests_spec.lua b/Tests/QuestieAvailableQuests_spec.lua new file mode 100644 index 0000000..aa40efa --- /dev/null +++ b/Tests/QuestieAvailableQuests_spec.lua @@ -0,0 +1,15 @@ +local function read(path) + local f = assert(io.open(path, "r"), "cannot open " .. path) + local c = f:read("*a") + f:close() + return c +end + +describe("Questie available quests guard", function() + it("skips unavailable quests before touching tagInfoWasCached", function() + local content = read("Modules/Quest/AvailableQuests.lua") + assert.is_true(content:find("if not quest then", 1, true) ~= nil) + assert.is_true(content:find("Skipping unavailable quest during draw", 1, true) ~= nil) + assert.is_true(content:find("quest.tagInfoWasCached = true", 1, true) ~= nil) + end) +end)