fix: Fixes ObjectPropertyList double return issue (#1969)

- Fixes double return issue with object property list that is causing corruption.
- Adds DEBUG_ARRAYPOOL define constant which will crash on double return or invalid return scenarios.

> [!IMPORTANT]
> **Developer Notes**
> STArrayPool rented arrays **MUST NOT** be returned **ONLY ONCE** otherwise there will be corruption from double-use.
> Use `DEBUG_ARRAYPOOL` to test potential broken STArrayPool use cases.

> [!NOTE]
> **Why can't I enable the debug all the time?**
> Other than the fact that it will crash due to bad code, the actual tracking system is highly detrimental/problematic for performance and memory consumption by creating objects that have a stack trace.
This commit is contained in:
Kamron Batman 2024-10-07 19:21:55 -07:00
parent 4b3b2839c6
commit b9d63e4160
No known key found for this signature in database
GPG key ID: 7D81DF26D9A5D94A
3 changed files with 69 additions and 8 deletions

View file

@ -1460,4 +1460,12 @@ public static partial class Utility
return (r << 10) | (g << 5) | b;
}
public static void AddOrUpdate<TKey, TValue>(this ConditionalWeakTable<TKey, TValue> table, TKey key, TValue value)
where TKey : class
where TValue : class
{
table.Remove(key);
table.Add(key, value);
}
}