Skip to content

fix: preserve zero-valued custom renderer results - #4162

Merged
UziTech merged 1 commit into
markedjs:masterfrom
Ghoscro:fix/preserve-zero-renderer-output
Nov 2, 2026
Merged

UziTech merged 1 commit into
markedjs:masterfrom
Ghoscro:fix/preserve-zero-renderer-output

Conversation

@Ghoscro

@Ghoscro Ghoscro commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Marked version: 18.1.1 / 4b7b5b2

Markdown flavor: n/a (custom renderer/parser API)

With Marked<number, number> and provideParser(), custom renderers can legitimately return zero. The .use() wrapper uses ret || "", changing numeric zero to an empty string. A code-character-count renderer therefore returns the wrong type for an empty fenced block.

Preserve zero-valued results while retaining the false fallback sentinel and null/undefined suppression behavior. Cover direct results, fallback, nonzero controls and null/undefined.

Validation: both zero-result regressions fail before this fix. Full npm test passes: 1911 specs, 203 units, UMD/CJS, TypeScript/attw and ESLint. Generated artifacts excluded.

AI assistance: prepared, independently reviewed and tested with OpenAI Codex.

Contributor

  • Tests cover the change.
  • No tests required.
  • New feature documented (not applicable: fixes existing behavior).

Committer

  • CI green.
  • Squash and merge.

@vercel

vercel Bot commented Oct 23, 2026

Copy link
Copy Markdown

@Ghoscro 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 24, 2026 10:00pm 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.

Nice catch! 💯

@UziTech
UziTech merged commit e43ceef 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 — 99dd0e25 Deployed Oct 24, 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