Deploy v1.4.4r6 AceSerializer hotfix
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v1.4.4r6 — Questie-X Network Deserialization Fix
|
||||||
|
|
||||||
|
- **[Network Fix]** Resolved a critical crash ("`Usage: AceSerializer:Deserialize(str): str must be a string, got table`") occurring in QuestieLearnerComms and Export functions. This was caused by a lightweight, customized `AceSerializer-3.0.lua` implementation in Questie-X that lacked proper `self` parameter handling for standard colon-syntax method calls (`:`). As a result, method calls were serializing/deserializing the library table itself instead of the intended payload string. We patched `AceSerializer` natively to dynamically support both dot (`.`) and colon (`:`) syntax seamlessly without dropping arguments, while ensuring `Deserialize` correctly yields `(success, result)` tuples expected by the calling functions.
|
||||||
|
|
||||||
## v1.4.4r5 — Comprehensive LibDeflate Taint Fix
|
## v1.4.4r5 — Comprehensive LibDeflate Taint Fix
|
||||||
|
|
||||||
- **[Network Fix]** Expanded the previous LibDeflate network crash hotfix: completely purged all 71 instances of unsafe `#` -> `table.getn` replacements injected by earlier vanilla compatibility automation throughout `LibDeflate.lua`. These have been wrapped with a custom dual-typed safe access function that flawlessly determines whether to compute properties natively via `string.len(x)` for strings or the standard `table.getn(x)` for structured tables—guaranteeing 100% stable networking cross-client from 1.12 to 3.3.5 and upwards.
|
- **[Network Fix]** Expanded the previous LibDeflate network crash hotfix: completely purged all 71 instances of unsafe `#` -> `table.getn` replacements injected by earlier vanilla compatibility automation throughout `LibDeflate.lua`. These have been wrapped with a custom dual-typed safe access function that flawlessly determines whether to compute properties natively via `string.len(x)` for strings or the standard `table.getn(x)` for structured tables—guaranteeing 100% stable networking cross-client from 1.12 to 3.3.5 and upwards.
|
||||||
|
|||||||
@@ -77,7 +77,10 @@ local function Serialize(t)
|
|||||||
return strjoin("", s)
|
return strjoin("", s)
|
||||||
end
|
end
|
||||||
|
|
||||||
AceSerializer.Serialize = Serialize
|
AceSerializer.Serialize = function(self, t)
|
||||||
|
local target = (self == AceSerializer or (type(self) == "table" and AceSerializer.embeds[self])) and t or self
|
||||||
|
return Serialize(target)
|
||||||
|
end
|
||||||
|
|
||||||
local function Deserialize(s)
|
local function Deserialize(s)
|
||||||
if type(s) ~= "string" then
|
if type(s) ~= "string" then
|
||||||
@@ -180,7 +183,11 @@ local function Deserialize(s)
|
|||||||
return value
|
return value
|
||||||
end
|
end
|
||||||
|
|
||||||
AceSerializer.Deserialize = Deserialize
|
AceSerializer.Deserialize = function(self, s)
|
||||||
|
local str = (self == AceSerializer or (type(self) == "table" and AceSerializer.embeds[self])) and s or self
|
||||||
|
local ok, res = pcall(Deserialize, str)
|
||||||
|
if ok then return true, res else return false, res end
|
||||||
|
end
|
||||||
|
|
||||||
-- http://lua-users.org/wiki/Base64EncoderAndDecoder
|
-- http://lua-users.org/wiki/Base64EncoderAndDecoder
|
||||||
local b64 = {
|
local b64 = {
|
||||||
|
|||||||
@@ -348,6 +348,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
<h2 id="v144r6">v1.4.4r6 — Questie-X Network Deserialization Fix</h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>[Network Fix]</strong> Resolved a critical crash ("<code>Usage: AceSerializer:Deserialize(str): str must be a string, got table</code>") occurring in QuestieLearnerComms and Export functions. This was caused by a lightweight, customized <code>AceSerializer-3.0.lua</code> implementation in Questie-X that lacked proper <code>self</code> parameter handling for standard colon-syntax method calls (<code>:</code>). As a result, method calls were serializing/deserializing the library table itself instead of the intended payload string. We patched <code>AceSerializer</code> natively to dynamically support both dot (<code>.</code>) and colon (<code>:</code>) syntax seamlessly without dropping arguments, while ensuring <code>Deserialize</code> correctly yields <code>(success, result)</code> tuples expected by the calling functions.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
<h2 id="v144r5">v1.4.4r5 — Comprehensive LibDeflate Taint Fix</h2>
|
<h2 id="v144r5">v1.4.4r5 — Comprehensive LibDeflate Taint Fix</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>[Network Fix]</strong> Expanded the previous LibDeflate network crash hotfix: completely purged all 71 instances of unsafe <code>#</code> -> <code>table.getn</code> replacements injected by earlier vanilla compatibility automation throughout <code>LibDeflate.lua</code>. These have been wrapped with a custom dual-typed safe access function that flawlessly determines whether to compute properties natively via <code>string.len(x)</code> for strings or the standard <code>table.getn(x)</code> for structured tables—guaranteeing 100% stable networking cross-client from 1.12 to 3.3.5 and upwards.</li>
|
<li><strong>[Network Fix]</strong> Expanded the previous LibDeflate network crash hotfix: completely purged all 71 instances of unsafe <code>#</code> -> <code>table.getn</code> replacements injected by earlier vanilla compatibility automation throughout <code>LibDeflate.lua</code>. These have been wrapped with a custom dual-typed safe access function that flawlessly determines whether to compute properties natively via <code>string.len(x)</code> for strings or the standard <code>table.getn(x)</code> for structured tables—guaranteeing 100% stable networking cross-client from 1.12 to 3.3.5 and upwards.</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user