Fix threading issue introduced by #117 once for all

This commit is contained in:
EvilFactory
2022-11-28 16:49:11 -03:00
parent 08f18e2e69
commit 1ea26f1891
@@ -16,10 +16,13 @@ namespace Barotrauma
public static IEnumerable<Type> GetDerivedNonAbstract<T>() public static IEnumerable<Type> GetDerivedNonAbstract<T>()
{ {
Assembly assembly = typeof(T).Assembly; Assembly assembly = typeof(T).Assembly;
lock (cachedNonAbstractTypes)
{
if (!cachedNonAbstractTypes.ContainsKey(assembly)) if (!cachedNonAbstractTypes.ContainsKey(assembly))
{ {
AddNonAbstractAssemblyTypes(assembly); AddNonAbstractAssemblyTypes(assembly);
} }
}
#warning TODO: Add safety checks in case an assembly is unloaded without being removed from the cache. #warning TODO: Add safety checks in case an assembly is unloaded without being removed from the cache.
return cachedNonAbstractTypes.Values.SelectMany(s => s.Where(t => t.IsSubclassOf(typeof(T)))); return cachedNonAbstractTypes.Values.SelectMany(s => s.Where(t => t.IsSubclassOf(typeof(T))));