diff options
| author | hallgren <hallgren@chalmers.se> | 2013-04-03 06:42:08 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2013-04-03 06:42:08 +0000 |
| commit | c02d5b188b82856eeb9b9bad16646723f27d822d (patch) | |
| tree | 059db511aec574729d30c1ce45cbc834d7a72d82 | |
| parent | 458ffc42d19e1b763b22bd5d6ae59475410fd5ce (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.hs | 10 |
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) |
