aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/Man.hs4
-rw-r--r--test/Tests/Readers/Man.hs2
2 files changed, 4 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Readers/Man.hs b/src/Text/Pandoc/Readers/Man.hs
index 6916e56db..96d31b9d1 100644
--- a/src/Text/Pandoc/Readers/Man.hs
+++ b/src/Text/Pandoc/Readers/Man.hs
@@ -204,9 +204,11 @@ escapeLexer = try $ do
<|> charCode `sepBy1` (many1 Parsec.space)
) <* char ']'
- ucharCode = do
+ ucharCode = try $ do
char 'u'
cs <- many1 (satisfy isHexDigit)
+ let lcs = length cs
+ guard $ lcs >= 4 && lcs <= 6
case chr <$> safeRead ('0':'x':cs) of
Nothing -> escUnknown ("\\[u" ++ cs ++ "]") '\xFFFD'
Just c -> return c
diff --git a/test/Tests/Readers/Man.hs b/test/Tests/Readers/Man.hs
index 7fd265122..fdb6718e2 100644
--- a/test/Tests/Readers/Man.hs
+++ b/test/Tests/Readers/Man.hs
@@ -76,7 +76,7 @@ tests = [
, "two letter escapes" =:
"\\(oA\\(~O" =?> (para $ text "ÅÕ")
, "bracketed escapes" =:
- "\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]" =?> (para $ text "ÅÕ$¥∏")
+ "\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]\\[ul]" =?> (para $ text "ÅÕ$¥∏_")
, "unicode escapes" =:
"\\[u2020]" =?> (para $ text "†")
, "unicode escapes (combined)" =: