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.
This commit is contained in:
hallgren
2013-04-03 06:42:08 +00:00
parent 458ffc42d1
commit c02d5b188b

View File

@@ -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)