public static void Dispose(ref AtomicSafetyHandle safety, ref DisposeSentinel sentinel) { AtomicSafetyHandle.CheckDeallocateAndThrow(safety); // If the safety handle is for a temp allocation, create a new safety handle for this instance which can be marked as invalid // Setting it to new AtomicSafetyHandle is not enough since the handle needs a valid node pointer in order to give the correct errors if (AtomicSafetyHandle.IsTempMemoryHandle(safety)) { safety = AtomicSafetyHandle.Create(); } AtomicSafetyHandle.Release(safety); Clear(ref sentinel); }
public static void Dispose(ref AtomicSafetyHandle safety, ref DisposeSentinel sentinel) { AtomicSafetyHandle.CheckDeallocateAndThrow(safety); bool flag = AtomicSafetyHandle.IsTempMemoryHandle(safety); if (flag) { int staticSafetyId = safety.staticSafetyId; safety = AtomicSafetyHandle.Create(); safety.staticSafetyId = staticSafetyId; } AtomicSafetyHandle.Release(safety); DisposeSentinel.Clear(ref sentinel); }
public static void Dispose(AtomicSafetyHandle safety, ref DisposeSentinel sentinel) { AtomicSafetyHandle.CheckDeallocateAndThrow(safety); AtomicSafetyHandle.Release(safety); DisposeSentinel.Clear(ref sentinel); }