summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2013-04-03 06:42:08 +0000
committerhallgren <hallgren@chalmers.se>2013-04-03 06:42:08 +0000
commitc02d5b188b82856eeb9b9bad16646723f27d822d (patch)
tree059db511aec574729d30c1ce45cbc834d7a72d82 /src
parent458ffc42d19e1b763b22bd5d6ae59475410fd5ce (diff)
Prevent Unicode characters in warning messages from stopping grammar compilation
When compiling a grammar containing characters that are not supported in the current locale, warning messages could cause GF fail with hPutChar: invalid argument (Invalid or incomplete multibyte or wide character) With this quick fix, warning messages that can not be displayed are silently truncated instead, and compilation continues.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/GF/Compile.hs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/GF/Compile.hs b/src/compiler/GF/Compile.hs
index 84aa3d7d9..91781d3ce 100644
--- a/src/compiler/GF/Compile.hs
+++ b/src/compiler/GF/Compile.hs
@@ -83,10 +83,12 @@ intermOut opts d doc
warnOut opts warnings
| null warnings = return ()
- | otherwise = ioeIO (hPutStrLn stderr $
- if flag optVerbosity opts == Normal
- then ('\n':warnings)
- else warnings)
+ | otherwise = ioeIO $ hPutStrLn stderr ws `catch` oops
+ where
+ oops _ = hPutStrLn stderr "" -- prevent crash on character encoding problem
+ ws = if flag optVerbosity opts == Normal
+ then '\n':warnings
+ else warnings
-- | the environment
type CompileEnv = (Int,SourceGrammar,ModEnv)