fix: clear WotLKDB globals on cached loads to remove lingering taint

docs: add v1.4.4r2 changelog
This commit is contained in:
Xurkon
2026-03-21 10:27:27 -05:00
parent 4054341199
commit a44909b1fe
3 changed files with 20 additions and 0 deletions
+4
View File
@@ -1,5 +1,9 @@
# Changelog
## v1.4.4r2 — Cached Load Taint Fix
- **[Taint Fix]** Resolved lingering `ADDON_ACTION_BLOCKED` taint on `ActionButton` and `StaticPopup` that occurred when Questie loaded data from its cache rather than manually recompiling. The `_G` namespace cleanup for `Questie-X-WotLKDB` globals now runs accurately during cached loads (via `UpdateWotLKDBStats`), ensuring the taint vector is closed and additionally freeing ~20MB of redundant cached memory.
## v1.4.4r1 — WotLKDB Global Namespace Taint Fix
- **[Taint Fix]** Resolved `ADDON_ACTION_BLOCKED` errors caused by `Questie-X-WotLKDB` leaving tainted global variables in `_G` after initialization. `QuestieInit._pullGlobal` now sets `_G[globalName] = nil` immediately after copying each WotLKDB table reference into `QuestieDB`, removing the taint vector while keeping all data fully accessible through `QuestieDB`.
+9
View File
@@ -476,6 +476,15 @@ function QuestieInit:UpdateWotLKDBStats()
wotlkPlugin.stats.ITEM = counts.ITEM
end
end
-- Fix #11: When the database is already compiled (cached), LoadBaseDB is never
-- run, so the global cleanup there is skipped. We MUST clean the namespace here
-- to prevent continuous ADDON_ACTION_BLOCKED taint errors during gameplay.
-- (Doing this also frees ~20MB of redundant RAM since the data is cached!)
_G["QuestieX_WotLKDB_quest"] = nil
_G["QuestieX_WotLKDB_npc"] = nil
_G["QuestieX_WotLKDB_object"] = nil
_G["QuestieX_WotLKDB_item"] = nil
end
function QuestieInit:LoadBaseDB()
+7
View File
@@ -348,6 +348,13 @@
</div>
<div class="container">
<h2 id="v144r2">v1.4.4r2 &mdash; Cached Load Taint Fix</h2>
<ul>
<li><strong>[Taint Fix]</strong> Resolved lingering <code>ADDON_ACTION_BLOCKED</code> taint on <code>ActionButton</code> and <code>StaticPopup</code> that occurred when Questie loaded data from its cache rather than manually recompiling. The <code>_G</code> namespace cleanup for <code>Questie-X-WotLKDB</code> globals now runs accurately during cached loads (via <code>UpdateWotLKDBStats</code>), ensuring the taint vector is closed and additionally freeing ~20MB of redundant cached memory.</li>
</ul>
<hr>
<h2 id="v144r1">v1.4.4r1 &mdash; WotLKDB Global Namespace Taint Fix</h2>
<ul>
<li><strong>[Taint Fix]</strong> Resolved <code>ADDON_ACTION_BLOCKED</code> errors caused by <code>Questie-X-WotLKDB</code> leaving tainted global variables in <code>_G</code> after initialization. <code>QuestieInit._pullGlobal</code> now sets <code>_G[globalName] = nil</code> immediately after copying each WotLKDB table reference into <code>QuestieDB</code>, removing the taint vector while keeping all data fully accessible through <code>QuestieDB</code>. <code>QuestieLearner</code> real-time updates are unaffected — they write exclusively to <code>QuestieDB.*Overrides</code> and <code>learnedData</code>.</li>