From 7fa5fbed9e0440694e9c52a8dc83f3e4f29c8a96 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Thu, 28 Mar 2019 13:51:15 -0700 Subject: 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. --- src/Text/Pandoc/Writers/Shared.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/Text/Pandoc/Writers') 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]) -- cgit v1.2.3