
Hi, I'm developing a mouse-driven user interface using HOpenGL/GLUT. However, it sometimes crashes if I'm too clumsy on my laptop's trackpad: $ ./gulci gulci: unmarshalMouseButton: illegal value 5 $ ./gulci gulci: unmarshalMouseButton: illegal value 6 The offending code calls error: --8<-- unmarshalMouseButton :: CInt -> MouseButton unmarshalMouseButton x | x == glut_LEFT_BUTTON = LeftButton | x == glut_MIDDLE_BUTTON = MiddleButton | x == glut_RIGHT_BUTTON = RightButton | x == glut_WHEEL_UP = WheelUp | x == glut_WHEEL_DOWN = WheelDown | otherwise = error ("unmarshalMouseButton: illegal value " ++ show x) --8<-- http://www.haskell.org/ghc/dist/current/docs/libraries/GLUT/src/Graphics-UI-... Suggested fix: modify the MouseButton type to have an additional constructor, eg: data MouseButton = ... | OtherMouseButton CInt and handle that case in the obvious way in the (un)marshal code (and suitably adjust any other code that pattern matches on MouseButton) BTW, I noticed I'm not the first to suffer from this crash issue, see for example #haskell IRC log from 2008-05-16. Claude -- http://claudiusmaximus.goto10.org