Skip to content

Commit 6d33829

Browse files
authored
Avoid array allocation in GetReferencedPart (#2043)
1 parent 0a24547 commit 6d33829

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ private static void Get(ValidationContext context, out SemanticValidationLevel l
125125

126126
if (string.IsNullOrEmpty(parts[0]))
127127
{
128-
return GetPartThroughPartPath(current.Package.Parts, parts.Skip(1).ToArray()); // absolute path
128+
return GetPartThroughPartPath(current.Package.Parts, parts.Skip(1)); // absolute path
129129
}
130130
else if (parts[0] == "..")
131131
{
@@ -242,15 +242,15 @@ protected static bool GetAttrNumVal(OpenXmlSimpleType attributeValue, out double
242242
}
243243

244244
[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")]
245-
private static OpenXmlPart? GetPartThroughPartPath(IEnumerable<IdPartPair> pairs, string[] path)
245+
private static OpenXmlPart? GetPartThroughPartPath(IEnumerable<IdPartPair> pairs, IEnumerable<string> path)
246246
{
247247
var foundPart = default(OpenXmlPart);
248248
var parts = pairs;
249249

250-
for (int i = 0; i < path.Length; i++)
250+
foreach (var pathPart in path)
251251
{
252252
foundPart = parts
253-
.Where(p => p.OpenXmlPart.GetType().Name == path[i])
253+
.Where(p => p.OpenXmlPart.GetType().Name == pathPart)
254254
.Select(t => t.OpenXmlPart)
255255
.SingleOrDefault();
256256

0 commit comments

Comments
 (0)