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 d58d7a4ce3
commit 56a299df79

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)