From d411db421bc1da2ade0ac79f2c0ce6445a7852e8 Mon Sep 17 00:00:00 2001 From: Kirk McKelvey Date: Fri, 24 Mar 2023 10:56:43 -0400 Subject: [PATCH] fix: close ObjectPool race condition (IntelRealSense#8334) --- .../Intel.RealSense/Helpers/ObjectPool.cs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/wrappers/csharp/Intel.RealSense/Helpers/ObjectPool.cs b/wrappers/csharp/Intel.RealSense/Helpers/ObjectPool.cs index 3ca525b117..44a0da6a7a 100644 --- a/wrappers/csharp/Intel.RealSense/Helpers/ObjectPool.cs +++ b/wrappers/csharp/Intel.RealSense/Helpers/ObjectPool.cs @@ -74,23 +74,17 @@ private static object CreateInstance(Type t, IntPtr ptr) private static object Get(Type t, IntPtr ptr) { var stack = GetPool(t); - int count; lock ((stack as ICollection).SyncRoot) { - count = stack.Count; - } - - if (count > 0) - { - Base.PooledObject obj; - lock ((stack as ICollection).SyncRoot) + if (stack.Count > 0) { + Base.PooledObject obj; obj = stack.Pop(); - } - obj.m_instance.Reset(ptr); - obj.Initialize(); - return obj; + obj.m_instance.Reset(ptr); + obj.Initialize(); + return obj; + } } return CreateInstance(t, ptr);