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)