From 9988b624e5f4d1b1101e0eeeb7c7408a600a437d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 23 Nov 2021 18:35:49 +0900 Subject: [PATCH] Fix #9868: imgmath: Crashed if the dvisvgm command failed to convert equation --- CHANGES | 1 + sphinx/ext/imgmath.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 6ef683b8e7a..db9e2a8f837 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,7 @@ Bugs fixed having invalid __doc__ atribute * #9872: html: Class namespace collision between autodoc signatures and docutils-0.17 +* #9868: imgmath: Crashed if the dvisvgm command failed to convert equation * #9864: mathjax: Failed to render equations via MathJax v2. The loading method of MathJax is back to "async" method again diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index a0f4ddcc343..697bfb72956 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -43,11 +43,11 @@ class MathExtError(SphinxError): category = 'Math extension error' - def __init__(self, msg: str, stderr: bytes = None, stdout: bytes = None) -> None: + def __init__(self, msg: str, stderr: str = None, stdout: str = None) -> None: if stderr: - msg += '\n[stderr]\n' + stderr.decode(sys.getdefaultencoding(), 'replace') + msg += '\n[stderr]\n' + stderr if stdout: - msg += '\n[stdout]\n' + stdout.decode(sys.getdefaultencoding(), 'replace') + msg += '\n[stdout]\n' + stdout super().__init__(msg) @@ -135,7 +135,8 @@ def compile_math(latex: str, builder: Builder) -> str: command.append('math.tex') try: - subprocess.run(command, stdout=PIPE, stderr=PIPE, cwd=tempdir, check=True) + subprocess.run(command, stdout=PIPE, stderr=PIPE, cwd=tempdir, check=True, + encoding='ascii') return path.join(tempdir, 'math.dvi') except OSError as exc: logger.warning(__('LaTeX command %r cannot be run (needed for math '