diff --git a/System/Hardware/Serialport/Posix.hsc b/System/Hardware/Serialport/Posix.hsc
--- a/System/Hardware/Serialport/Posix.hsc
+++ b/System/Hardware/Serialport/Posix.hsc
@@ -17,7 +17,7 @@
            -> SerialPortSettings
            -> IO SerialPort
 openSerial dev settings = do
-  fd' <- openFd dev ReadWrite Nothing defaultFileFlags { noctty = True }
+  fd' <- openFd dev ReadWrite Nothing defaultFileFlags { noctty = True, nonBlock = True }
   let serial_port = SerialPort fd' defaultSerialSettings
   return =<< setSerialSettings serial_port settings
 
diff --git a/System/Win32/Comm.hsc b/System/Win32/Comm.hsc
--- a/System/Win32/Comm.hsc
+++ b/System/Win32/Comm.hsc
@@ -90,7 +90,7 @@
 
 getCommState :: HANDLE -> IO SerialPortSettings
 getCommState h =
-  alloca (\dcbp -> do _ <- c_GetCommState h dcbp
+  alloca (\dcbp -> do failIfFalse_ "getCommState" $ c_GetCommState h dcbp
                       peek dcbp )
 
 
diff --git a/serialport.cabal b/serialport.cabal
--- a/serialport.cabal
+++ b/serialport.cabal
@@ -1,5 +1,5 @@
 Name:           serialport
-Version:        0.4.3
+Version:        0.4.4
 Cabal-Version:  >= 1.6
 Build-Type:     Custom
 license:        BSD3
