Skip to content

Commit d413895

Browse files
committed
Defensive code to prevent a crash #191
1 parent 586efde commit d413895

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/Html2OpenXml/Expressions/TextExpression.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ public override IEnumerable<OpenXmlElement> Interpret (ParsingContext context)
8181
// doesn't ends/starts with a whitespace
8282
if (text.Length == 0 && prevIsPhrasing && nextIsPhrasing
8383
&& (endsWithSpace || startsWithSpace)
84-
&& !(node.PreviousSibling!.TextContent[node.PreviousSibling!.TextContent.Length - 1].IsWhiteSpaceCharacter()
84+
&& !(node.PreviousSibling!.TextContent.Length == 0
85+
|| node.PreviousSibling!.TextContent[node.PreviousSibling!.TextContent.Length - 1].IsWhiteSpaceCharacter()
8586
|| node.NextSibling!.TextContent[0].IsWhiteSpaceCharacter()
8687
))
8788
{

test/HtmlToOpenXml.Tests/WhitespaceTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ public void ConsecutiveDivs_ReturnsMultipleParagraphs ()
3939
[TestCase("<span> Hello \r\n World! </span>")]
4040
[TestCase("<span> Hello\r\n\r\nWorld! </span>")]
4141
[TestCase("<div><u>Hello World! </u></div>")]
42+
[TestCase("<hr>\n <span>Hello World!</span>")]
4243
public void Multiline_ReturnsCollapsedText (string html)
4344
{
4445
var elements = converter.Parse(html);
45-
Assert.That(elements, Has.Count.EqualTo(1));
46+
Assert.That(elements, Has.Count.GreaterThanOrEqualTo(1));
4647
Assert.That(elements, Has.All.TypeOf<Paragraph>());
47-
Assert.That(elements[0].InnerText, Is.EqualTo("Hello World!"));
48+
Assert.That(elements.Last().InnerText, Is.EqualTo("Hello World!"));
4849
}
4950

5051
[TestCase("h1")]

0 commit comments

Comments
 (0)