aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2019-03-28 13:51:15 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2019-03-28 13:51:15 -0700
commit7fa5fbed9e0440694e9c52a8dc83f3e4f29c8a96 (patch)
tree3015d7ef16559c3c40e6f1db2644bc5bac00565e /src/Text/Pandoc/Writers
parentb87a3efb93a7354c53117fa4ba6d43d2b5746ee9 (diff)
downloadpandoc-7fa5fbed9e0440694e9c52a8dc83f3e4f29c8a96.tar.gz
Use strict instead of lazy sum.
sum is lazy; replace with `foldl' (+) 0` to avoid stack overflow in Text.Pandoc.Pretty with very long strings. Closes #5401.
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r--src/Text/Pandoc/Writers/Shared.hs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/Shared.hs b/src/Text/Pandoc/Writers/Shared.hs
index 7027a9576..f4370b7bf 100644
--- a/src/Text/Pandoc/Writers/Shared.hs
+++ b/src/Text/Pandoc/Writers/Shared.hs
@@ -41,7 +41,7 @@ import Data.Aeson (FromJSON (..), Result (..), ToJSON (..), Value (Object),
encode, fromJSON)
import Data.Char (chr, ord, isSpace, isDigit)
import qualified Data.HashMap.Strict as H
-import Data.List (groupBy, intersperse, transpose)
+import Data.List (groupBy, intersperse, transpose, foldl')
import qualified Data.Map as M
import Data.Maybe (isJust)
import qualified Data.Text as T
@@ -279,7 +279,7 @@ gridTable opts blocksToDoc headless aligns widths headers rows = do
-- handleGivenWidths
let handleZeroWidths = do
(widthsInChars', rawHeaders', rawRows') <- handleFullWidths
- if sum widthsInChars' > writerColumns opts
+ if foldl' (+) 0 widthsInChars' > writerColumns opts
then -- use even widths
handleGivenWidths
(replicate numcols (1.0 / fromIntegral numcols) :: [Double])