Marked version: 13
Describe the bug
as title, code will throw "Maximum call stack size exceeded" error
To Reproduce
npm install --save marked@13.0.2
- run code like below
const marked = require('marked')
const content = '\n## 1. some title\n\nsimple content'
marked.use({
renderer: {
heading(text, level) {
const escapedText = encodeURIComponent(text).replaceAll('%', '.');
return `<h${level} id="${escapedText}">
${text}
</h${level}>`;
},
},
});
for (const _ of new Array(10000).fill(0)) {
marked.parse(content);
}
- code will throw error "RangeError: Maximum call stack size exceeded"
some code dig
As I read through the code, it seems that, in simple terms, reassignment rendererFunc leads to recursive-like calls (each execution results in an additional call).
