From 4efc652ed5541e843388d8b022ed37d2a6e50042 Mon Sep 17 00:00:00 2001 From: Nicolas Graziano Date: Tue, 1 Nov 2022 09:49:09 +0100 Subject: [PATCH] Do not modify enumerated tree when plot is shown. (#853) When going to sleep some node are removed on my PC and it crash with InvalidOperationException because the collection is modified during enumeration. So return a copy of the filtered list instead of yield return. --- LibreHardwareMonitor/UI/TreeModel.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/LibreHardwareMonitor/UI/TreeModel.cs b/LibreHardwareMonitor/UI/TreeModel.cs index 6675ab7..896eb5c 100644 --- a/LibreHardwareMonitor/UI/TreeModel.cs +++ b/LibreHardwareMonitor/UI/TreeModel.cs @@ -8,6 +8,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; using Aga.Controls.Tree; namespace LibreHardwareMonitor.UI; @@ -59,12 +60,10 @@ public class TreeModel : ITreeModel Node node = GetNode(treePath); if (node != null) { - foreach (Node n in node.Nodes) - if (_forceVisible || n.IsVisible) - yield return n; + return node.Nodes.Where(n => _forceVisible || n.IsVisible).ToList(); } - else - { } + + return Enumerable.Empty(); } public bool IsLeaf(TreePath treePath) @@ -122,4 +121,4 @@ public class TreeModel : ITreeModel NodesRemoved?.Invoke(this, args); } -} \ No newline at end of file +}