Fix runaway regular expression when parsing MathML #714 (#728)

This commit is contained in:
Jaifroid 2025-06-17 19:56:58 +01:00 committed by GitHub
parent cf0dfc73f2
commit b971457af7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6442,17 +6442,8 @@ function displayArticleContentInContainer (dirEntry, htmlArticle) {
// }
// Replace all TeX SVGs with MathJax scripts
if (params.useMathJax) {
// Deal with any newer MathML blocks
htmlArticle = htmlArticle.replace(/(<math\b[^>]+alttext=(["']))((?:[^"']|[\s\S](?!\2))+?)(\2(?:[^<]|<(?!\/math))+(?:[^<]|<(?!img))+)<img\b[^>]+?class=["'][^"']*?mwe-math-fallback-image[^>]+>/ig,
function (_p0, p1, _p2, math, p4) {
// Remove any rogue ampersands in MathJax due to double escaping (by Wikipedia)
math = math.replace(/&amp;/g, '&');
// Change any mbox commands to fbox (because KaTeX doesn't support mbox)
math = math.replace(/mbox{/g, 'fbox{');
return p1 + math + p4 + '<script type="math/tex">' + math + '</script>';
});
// Older math blocks
if (params.useMathJax && appstate.wikimediaZimLoaded) {
// Make any Wikimedia MathJax compatible with KaTeX
htmlArticle = htmlArticle.replace(/<img\s+(?=[^>]+?math-fallback-image)[^>]*?alt\s*=\s*(['"])((?:[^"']|(?!\1)[\s\S])+)[^>]+>/ig,
function (p0, p1, math) {
// Remove any rogue ampersands in MathJax due to double escaping (by Wikipedia)