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 /src | |
| 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.
Diffstat (limited to 'src')
| -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) |
