summaryrefslogtreecommitdiff
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
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.
-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)