From 82b4f9670006ec95b469e062db9e2f19294be9c5 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sun, 22 Mar 2026 20:57:46 +1100 Subject: [PATCH] avoid array allocation in GetReferencedPart --- .../Validation/Semantic/SemanticConstraint.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs b/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs index 4ce094d37..497373d97 100644 --- a/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs +++ b/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs @@ -125,7 +125,7 @@ private static void Get(ValidationContext context, out SemanticValidationLevel l if (string.IsNullOrEmpty(parts[0])) { - return GetPartThroughPartPath(current.Package.Parts, parts.Skip(1).ToArray()); // absolute path + return GetPartThroughPartPath(current.Package.Parts, parts.Skip(1)); // absolute path } else if (parts[0] == "..") { @@ -242,15 +242,15 @@ protected static bool GetAttrNumVal(OpenXmlSimpleType attributeValue, out double } [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1851:Possible multiple enumerations of 'IEnumerable' collection", Justification = "We're resetting the parts variable, but the analyzer doesn't realize that")] - private static OpenXmlPart? GetPartThroughPartPath(IEnumerable pairs, string[] path) + private static OpenXmlPart? GetPartThroughPartPath(IEnumerable pairs, IEnumerable path) { var foundPart = default(OpenXmlPart); var parts = pairs; - for (int i = 0; i < path.Length; i++) + foreach (var pathPart in path) { foundPart = parts - .Where(p => p.OpenXmlPart.GetType().Name == path[i]) + .Where(p => p.OpenXmlPart.GetType().Name == pathPart) .Select(t => t.OpenXmlPart) .SingleOrDefault();