diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-03-14 14:03:15 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-03-14 14:03:15 -0700 |
commit | 814af2002e4837c160526123ef753bb34547d811 (patch) | |
tree | b6eeeaf319c3c57bb0cceb677a12714c34b3eca9 | |
parent | 76ef65f0b36d3a613e004350609d3696d0bf5658 (diff) | |
download | pandoc-814af2002e4837c160526123ef753bb34547d811.tar.gz |
RST writer: Avoid stack overflow with certain tables.
Closes #1197.
Note that there are still problems with the formatting of
the tables inside tables with output produced from the input
file in the original bug report. But this fixes the stack
overflow problem.
-rw-r--r-- | src/Text/Pandoc/Writers/RST.hs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 37bb66632..1e7596b21 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -219,11 +219,15 @@ blockToRST (Table caption _ widths headers rows) = do else blankline <> text "Table: " <> caption' headers' <- mapM blockListToRST headers rawRows <- mapM (mapM blockListToRST) rows - let isSimple = all (==0) widths && all (all (\bs -> length bs <= 1)) rows + -- let isSimpleCell [Plain _] = True + -- isSimpleCell [Para _] = True + -- isSimpleCell [] = True + -- isSimpleCell _ = False + -- let isSimple = all (==0) widths && all (all isSimpleCell) rows let numChars = maximum . map offset opts <- get >>= return . stOptions let widthsInChars = - if isSimple + if all (== 0) widths then map ((+2) . numChars) $ transpose (headers' : rawRows) else map (floor . (fromIntegral (writerColumns opts) *)) widths let hpipeBlocks blocks = hcat [beg, middle, end] |