0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00

Resolve lock in cloner if debugger is attached (#1075)

This commit is contained in:
Jesse 2025-01-13 20:37:41 +01:00 committed by GitHub
parent bb26db793a
commit 9a94f12e5f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -60,14 +60,15 @@ export class RecursiveCloner implements ICloner {
if (typeOfObj === "object") { if (typeOfObj === "object") {
if (Array.isArray(obj)) { if (Array.isArray(obj)) {
const objArr = obj as Array<T>; const objArr = obj as Array<T>;
const clonedArray = await Promise.all(objArr.map(async (v) => await this.cloneAsync(v))); const clonedArray = await Promise.all(objArr.map((v) => this.cloneAsync(v)));
return clonedArray as T; return clonedArray as T;
} }
const newObj: Record<string, T> = {}; const newObj: Record<string, T> = {};
const clonePromises = Object.keys(obj).map(async (key) => { const clonePromises = Object.keys(obj).map((key) => {
const value = (obj as Record<string, T>)[key]; const value = (obj as Record<string, T>)[key];
newObj[key] = await this.cloneAsync(value); // Assign values to `newObj` with this.clone, assigning values to `newObj` causes locks with the debugger attached if cloneAsync is used.
newObj[key] = this.clone(value);
}); });
await Promise.all(clonePromises); await Promise.all(clonePromises);