diff --git a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java index 607a68bb..62b392b8 100644 --- a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java @@ -391,6 +391,10 @@ private void findNextNonSpace() { } private void setNewIndex(int newIndex) { + if (newIndex == index) { + // Staying where we are, so keep a partially consumed tab (e.g. after ">\t") as it is + return; + } if (newIndex >= nextNonSpace) { // We can start from here, no need to calculate tab stops again index = nextNonSpace; diff --git a/commonmark/src/test/java/org/commonmark/test/SpecialInputTest.java b/commonmark/src/test/java/org/commonmark/test/SpecialInputTest.java index 007b5765..43b7686c 100644 --- a/commonmark/src/test/java/org/commonmark/test/SpecialInputTest.java +++ b/commonmark/src/test/java/org/commonmark/test/SpecialInputTest.java @@ -463,4 +463,12 @@ public void codeSpansAfterUnclosedBackticks() { assertRendering( "`` `a` `c` `e`", "
`` a c e
\n\n\n"); + assertRendering(">\n>\tfoo", "\n\n foo\n\n"); + } }