From cdb486fe233ffc5345f58070bcd8b4732c9ba0cd Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 30 Jul 2019 13:39:22 +0200 Subject: [PATCH] Fix NRE in VisualNode.SortChildren. `_children` may be null. In addition if there are < 2 children, there's no sorting to be done. --- src/Avalonia.Visuals/Rendering/SceneGraph/VisualNode.cs | 5 +++++ .../Rendering/SceneGraph/VisualNodeTests.cs | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/VisualNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/VisualNode.cs index 709a935450..c3dfe12b2d 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/VisualNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/VisualNode.cs @@ -179,6 +179,11 @@ namespace Avalonia.Rendering.SceneGraph /// The scene that the node is a part of. public void SortChildren(Scene scene) { + if (_children == null || _children.Count <= 1) + { + return; + } + var keys = new List(); for (var i = 0; i < Visual.VisualChildren.Count; ++i) diff --git a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/VisualNodeTests.cs b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/VisualNodeTests.cs index 1101ccacba..24ba2d1c48 100644 --- a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/VisualNodeTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/VisualNodeTests.cs @@ -92,5 +92,14 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph Assert.Same(node1.DrawOperations[0].Item, node2.DrawOperations[0].Item); Assert.NotSame(node1.DrawOperations[0], node2.DrawOperations[0]); } + + [Fact] + public void SortChildren_Does_Not_Throw_On_Null_Children() + { + var node = new VisualNode(Mock.Of(), null); + var scene = new Scene(Mock.Of()); + + node.SortChildren(scene); + } } }