diff --git a/MissingH.cabal b/MissingH.cabal
--- a/MissingH.cabal
+++ b/MissingH.cabal
@@ -1,9 +1,9 @@
 Name: MissingH
-Version: 1.4.0.1
+Version: 1.4.1.0
 License: BSD3
 Maintainer: John Goerzen <jgoerzen@complete.org>
 Author: John Goerzen
-Copyright: Copyright (c) 2004-2016 John Goerzen
+Copyright: Copyright (c) 2004-2018 John Goerzen
 license-file: LICENSE
 extra-source-files: LICENSE,
                     announcements/0.10.0.txt,
diff --git a/src/Data/Compression/Inflate.hs b/src/Data/Compression/Inflate.hs
--- a/src/Data/Compression/Inflate.hs
+++ b/src/Data/Compression/Inflate.hs
@@ -186,8 +186,10 @@
                return (bits_to_word32 bs)
 
 get_bit :: InfM Bit
-get_bit = do [x] <- get_bits 1
-             return x
+get_bit = do res <- get_bits 1
+             case res of
+                 _ -> error $ "get_bit: expected exactly one bit"
+                 [x] -> return x
 
 {-
 \section{Inflate itself}
@@ -205,24 +207,27 @@
 inflate_blocks :: Bool -> InfM Output
 inflate_blocks True = return []
 inflate_blocks False
-     = do [Bit is_last, Bit t1, Bit t2] <- get_bits 3
-          case (t1, t2) of
-              (False, False) ->
-                  do align_8_bits
-                     len <- get_w32 16
-                     nlen <- get_w32 16
-                     unless (len + nlen == 2^(32 :: Int) - 1)
-                        $ error "inflate_blocks: Mismatched lengths"
-                     ws <- get_word32s 8 len
-                     mapM_ output_w32 ws
-                     return ws
-              (True, False) ->
-                  inflate_codes is_last inflate_trees_fixed
-              (False, True) ->
-                  do tables <- inflate_tables
-                     inflate_codes is_last tables
-              (True, True) ->
-                  error ("inflate_blocks: case 11 reserved")
+     = do res <- get_bits 3
+          case res of
+              [Bit is_last, Bit t1, Bit t2] ->
+                  case (t1, t2) of
+                      (False, False) ->
+                          do align_8_bits
+                             len <- get_w32 16
+                             nlen <- get_w32 16
+                             unless (len + nlen == 2^(32 :: Int) - 1)
+                                $ error "inflate_blocks: Mismatched lengths"
+                             ws <- get_word32s 8 len
+                             mapM_ output_w32 ws
+                             return ws
+                      (True, False) ->
+                          inflate_codes is_last inflate_trees_fixed
+                      (False, True) ->
+                          do tables <- inflate_tables
+                             inflate_codes is_last tables
+                      (True, True) ->
+                          error ("inflate_blocks: case 11 reserved")
+              _ -> error ("inflate_blocks: expected 3 bits")
 
 inflate_tables :: InfM Tables
 inflate_tables
