diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -10,7 +10,7 @@
 
 helpMsg :: IO ()
 helpMsg = putStr $ unlines $
-    ["TagSoup, (C) Neil Mitchell 2006-2009"
+    ["TagSoup, (C) Neil Mitchell 2006-2012"
     ,""
     ,"  tagsoup arguments"
     ,""
diff --git a/Text/HTML/TagSoup/Implementation.hs b/Text/HTML/TagSoup/Implementation.hs
--- a/Text/HTML/TagSoup/Implementation.hs
+++ b/Text/HTML/TagSoup/Implementation.hs
@@ -81,7 +81,7 @@
     where
         -- main choice loop
         go :: ((Position,[Tag str]),[Out]) -> [Tag str]
-        go ((p,ws),xs) | p `seq` False = [] -- otherwise p is a space leak when optTagPosition == False
+        go ((p,ws),xs) | p `seq` False = undefined -- otherwise p is a space leak when optTagPosition == False
         go ((p,ws),xs) | not $ null ws = (if optTagWarning then (reverse ws++) else id) $ go ((p,[]),xs)
         go ((p,ws),Pos p2:xs) = go ((p2,ws),xs)
 
@@ -119,6 +119,7 @@
 
         -- loop round collecting characters, if the b is set including entity
         charss :: Bool -> ((Position,[Tag str]),[Out]) -> ( ((Position,[Tag str]),[Out]) , String)
+        charss _ ((p,_),_) | p `seq` False = undefined
         charss t x | Just a <- fromChr x = (y, a:b)
             where (y,b) = charss t (next x)
         charss t x | t, isEntityName x = second (toString n ++) $ charss t $ addWarns m z
diff --git a/tagsoup.cabal b/tagsoup.cabal
--- a/tagsoup.cabal
+++ b/tagsoup.cabal
@@ -1,6 +1,6 @@
 cabal-version:  >= 1.6
 name:           tagsoup
-version:        0.12.7
+version:        0.12.8
 copyright:      Neil Mitchell 2006-2012
 author:         Neil Mitchell <ndmitchell@gmail.com>
 maintainer:     Neil Mitchell <ndmitchell@gmail.com>
