Skip to content

Commit 31aec5a

Browse files
committed
add IsEmptyPart method to ensure stream is disposed
1 parent 2097f05 commit 31aec5a

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/DocumentFormat.OpenXml.Framework/Packaging/OpenXmlPart.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,18 @@ internal virtual bool IsInVersion(FileFormatVersions version)
448448
return true;
449449
}
450450

451+
internal override bool IsEmptyPart()
452+
{
453+
bool isEmptyPart;
454+
455+
using (Stream stream = GetStream())
456+
{
457+
isEmptyPart = stream.Length == 0;
458+
}
459+
460+
return isEmptyPart;
461+
}
462+
451463
#endregion
452464

453465
#region internal methods

src/DocumentFormat.OpenXml.Framework/Packaging/OpenXmlPartContainer.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,6 +1657,11 @@ internal OpenXmlPart CreateOpenXmlPart(string relationshipType)
16571657
// find all reachable parts from the package root, the dictionary also used for cycle reference defense
16581658
internal abstract void FindAllReachableParts(IDictionary<OpenXmlPart, bool> reachableParts);
16591659

1660+
internal virtual bool IsEmptyPart()
1661+
{
1662+
return false;
1663+
}
1664+
16601665
#endregion
16611666

16621667
// Checks if the target part is in the same OpenXmlPackage as this part.

src/DocumentFormat.OpenXml.Framework/Validation/DocumentValidator.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ private void ValidatePart(OpenXmlPart part, ValidationContext context)
107107
{
108108
Validate(context);
109109
}
110-
else if (part.Uri.ToString().EndsWith(".xml", System.StringComparison.InvariantCultureIgnoreCase) &&
111-
part.GetStream().Length == 0)
110+
else if (part.Uri.ToString().EndsWith(".xml", System.StringComparison.InvariantCultureIgnoreCase) && part.IsEmptyPart())
112111
{
113112
context.AddError(new ValidationErrorInfo
114113
{

0 commit comments

Comments
 (0)