Skip to content

fix: do not allow a blank line inside a link reference definition label - #4165

Merged
UziTech merged 1 commit into
markedjs:masterfrom
amanjhacodes55:fix/def-label-blank-line
Nov 2, 2026
Merged

UziTech merged 1 commit into
markedjs:masterfrom
amanjhacodes55:fix/def-label-blank-line

Conversation

@amanjhacodes55

Copy link
Copy Markdown
Contributor

Marked version: 18.1.1 (master at 4b7b5b2)

Markdown flavor: CommonMark

Description

No existing issue that I could find.

Expectation

A blank line ends a paragraph before any inline parsing happens, so a link reference definition (or a reference) can't continue across one: the bracket on the first line is plain text. So this is two paragraphs and no definition:

[foo

bar]: /url

[foo

bar]
<p>[foo</p>
<p>bar]: /url</p>
<p>[foo</p>
<p>bar]</p>

commonmark.js and micromark both give this.

Result

<p>[foo</p>
<p>bar]</p>

The first block is swallowed as a definition, so its text disappears from the output.

Change

_blockLabel (used only by block.def) no longer matches a newline that is followed by a blank line. Labels over several lines ([baz\nqux]) still work, and the spec test covers both.

  • npm run test:specs / test:unit / lint pass; new spec test/specs/new/def_label_blank_line.
  • npm run bench: within noise of master. Parse time on long label inputs stays linear (the '[' + '\n\\]'.repeat(n) pattern from test:redos: 7, 7, 21 ms at n = 1k, 4k, 16k, same as master).

Found while comparing marked with commonmark.js and micromark on fuzzed input; written with help from an AI assistant (Claude) and checked against marked's test suite as described above.

Contributor

  • Test(s) exist to ensure functionality and minimize regression
  • no tests required for this PR.
  • If submitting new feature, it has been documented in the appropriate places.

Committer

In most cases, this should be a different person than the contributor.

@vercel

vercel Bot commented Oct 24, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the MarkedJS Team on Vercel.

A member of the Team first needs to authorize it.

@vercel

vercel Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
marked-website Ready Ready Preview Oct 26, 2026 6:46am UTC

Request Review

@UziTech UziTech left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! 💯

@UziTech
UziTech force-pushed the fix/def-label-blank-line branch from 08eb107 to 6665cae Compare October 26, 2026 06:44
@UziTech
UziTech merged commit f3d21af into markedjs:master Nov 2, 2026
8 checks passed
github-actions Bot pushed a commit that referenced this pull request Nov 2, 2026
## [18.1.3](v18.1.2...v18.1.3) (2026-11-02)

### Bug Fixes

* allow trailing tabs after a setext heading underline ([#4152](#4152)) ([1f1b480](1f1b480))
* avoid quadratic scan for unmatched emphasis delimiters ([#4103](#4103)) ([eab1e48](eab1e48)), closes [#4099](#4099)
* await promise arrays from walkTokens extensions ([#4153](#4153)) ([c38704c](c38704c))
* **cli:** honor defaults and config when outputting tokens ([#4146](#4146)) ([9470e8f](9470e8f))
* collapse internal whitespace when normalizing link labels ([#4157](#4157)) ([02c73e8](02c73e8))
* do not allow a blank line inside a link reference definition label ([#4165](#4165)) ([f3d21af](f3d21af))
* don't treat an escaped ) or quote as an inline link or title closer ([#4151](#4151)) ([9cb84e0](9cb84e0))
* end a list item before a lazy line after an html block ([#4159](#4159)) ([7ba42f4](7ba42f4))
* end blockquote before a lazy line after a table ([#4161](#4161)) ([e7dcf52](e7dcf52))
* isolate extension names from Object.prototype ([#4177](#4177)) ([5cb03bd](5cb03bd))
* keep a block quote open after a lazy line in a nested block quote ([#4175](#4175)) ([1d7272f](1d7272f))
* only close a code fence with the opening fence character ([#4164](#4164)) ([1d4d8fe](1d4d8fe))
* preserve zero-valued custom renderer results ([#4162](#4162)) ([e43ceef](e43ceef))
* recognize task list items when a tab follows the checkbox ([#4163](#4163)) ([64a299d](64a299d))
* start a GFM www autolink only at a word boundary ([#4166](#4166)) ([84beefb](84beefb))

### Performance Improvements

* fix backtracking in padantic html ([#4173](#4173)) ([2d4a23c](2d4a23c))

This branch was successfully deployed

1 active deployment
Preview — 6665cae7 Deployed Oct 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants