@@ -23,9 +23,11 @@ import Control.Concurrent.Async (async)
2323import Control.Concurrent.STM (newEmptyTMVarIO , atomically , putTMVar , readTMVar , STM , tryPutTMVar , throwSTM )
2424import System.Exit (ExitCode )
2525import qualified Data.ByteString.Lazy as L
26- import qualified Data.ByteString.Lazy.Char8 as L8
2726import Data.String (IsString (fromString ))
2827import Control.Monad.IO.Unlift
28+ import qualified Data.Text.Encoding.Error as TEE
29+ import qualified Data.Text.Lazy as TL
30+ import qualified Data.Text.Lazy.Encoding as TLE
2931
3032#if MIN_VERSION_process(1, 4, 0) && !WINDOWS
3133import System.Posix.Types (GroupID , UserID )
@@ -620,11 +622,13 @@ instance Show ExitCodeException where
620622 , show (eceProcessConfig ece) { pcEnv = Nothing }
621623 , if L. null (eceStdout ece)
622624 then " "
623- else " Standard output:\n\n " ++ L8. unpack (eceStdout ece)
625+ else " Standard output:\n\n " ++ unpack (eceStdout ece)
624626 , if L. null (eceStderr ece)
625627 then " "
626- else " Standard error:\n\n " ++ L8. unpack (eceStderr ece)
628+ else " Standard error:\n\n " ++ unpack (eceStderr ece)
627629 ]
630+ where
631+ unpack = TL. unpack . TLE. decodeUtf8With TEE. lenientDecode
628632
629633-- | Wrapper for when an exception is thrown when reading from a child
630634-- process, used by 'byteStringOutput'.
0 commit comments