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:
parent
4b3b2839c6
commit
b9d63e4160
3 changed files with 69 additions and 8 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue