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 warnOut opts warnings
| null warnings = return () | null warnings = return ()
| otherwise = ioeIO (hPutStrLn stderr $ | otherwise = ioeIO $ hPutStrLn stderr ws `catch` oops
if flag optVerbosity opts == Normal where
then ('\n':warnings) oops _ = hPutStrLn stderr "" -- prevent crash on character encoding problem
else warnings) ws = if flag optVerbosity opts == Normal
then '\n':warnings
else warnings
-- | the environment -- | the environment
type CompileEnv = (Int,SourceGrammar,ModEnv) type CompileEnv = (Int,SourceGrammar,ModEnv)