From 60f0f69617791d765d8e4859ee2f60710fc22558 Mon Sep 17 00:00:00 2001 From: walterlv Date: Wed, 2 Jul 2025 03:00:06 +0800 Subject: [PATCH] Avoid memory leak by clearing the shared array pool of LightweightObservableBase (#19167) --- src/Avalonia.Base/Reactive/LightweightObservableBase.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Base/Reactive/LightweightObservableBase.cs b/src/Avalonia.Base/Reactive/LightweightObservableBase.cs index 04759e314d..0688a4edb4 100644 --- a/src/Avalonia.Base/Reactive/LightweightObservableBase.cs +++ b/src/Avalonia.Base/Reactive/LightweightObservableBase.cs @@ -20,7 +20,7 @@ namespace Avalonia.Reactive private List>? _observers = new List>(); public bool HasObservers => _observers?.Count > 0; - + public IDisposable Subscribe(IObserver observer) { _ = observer ?? throw new ArgumentNullException(nameof(observer)); @@ -168,6 +168,8 @@ namespace Avalonia.Reactive for(int i = 0; i < count; i++) { observers[i].OnNext(value); + // Avoid memory leak by clearing the reference. + observers[i] = null!; } ArrayPool>.Shared.Return(observers);