aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2025-03-07 14:28:10 -0800
committerJohn MacFarlane <[email protected]>2025-03-07 14:28:10 -0800
commitb7d2c4815fd2a3f429f4968e8e4e7a5d4d847d9e (patch)
tree983fdf6e9360052cc8bc6b0802b67a87b3ae9968
parent5a360f1abea5542fd0c116cbf0e8ce41afcf1f40 (diff)
Markdown reader: fixed `escapedChar'` parser.
It should not accept escaped newlines. See #10672.
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs3
-rw-r--r--test/command/10672.md26
2 files changed, 28 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index d019ee1a5..d73bed229 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -1553,7 +1553,8 @@ inline = do
escapedChar' :: PandocMonad m => MarkdownParser m Char
escapedChar' = try $ do
char '\\'
- (guardEnabled Ext_all_symbols_escapable >> satisfy (not . isAlphaNum))
+ (guardEnabled Ext_all_symbols_escapable >>
+ satisfy (\c -> c /= '\n' && c /= '\r' && not (isAlphaNum c)))
<|> (guardEnabled Ext_angle_brackets_escapable >>
oneOf "\\`*_{}[]()>#+-.!~\"<>")
<|> oneOf "\\`*_{}[]()>#+-.!"
diff --git a/test/command/10672.md b/test/command/10672.md
new file mode 100644
index 000000000..5ff9285e4
--- /dev/null
+++ b/test/command/10672.md
@@ -0,0 +1,26 @@
+```
+% pandoc
+| This | Is |
+|:-----|:---|
+| With \
+| Cells
+^D
+<table>
+<thead>
+<tr>
+<th style="text-align: left;">This</th>
+<th style="text-align: left;">Is</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align: left;">With \</td>
+<td style="text-align: left;"></td>
+</tr>
+<tr>
+<td style="text-align: left;">Cells</td>
+<td style="text-align: left;"></td>
+</tr>
+</tbody>
+</table>
+```