diff --git a/src/HpcUtils.hs b/src/HpcUtils.hs
index d4cee8dd706c94bbc278d574b78750d198f4bb00..a3ee5a66bc273171db5399086d3a3db2011720ea 100644
--- a/src/HpcUtils.hs
+++ b/src/HpcUtils.hs
@@ -15,10 +15,11 @@ dropWhileEndLE p = foldr (\x r -> if null r && p x then [] else x : r) []
 grabHpcPos :: Map.Map Int String -> HpcPos -> String
 grabHpcPos hsMap srcspan =
   case lns of
+    [] -> error "grabHpcPos: invalid source span"
     [ln] ->
       take ((c2 - c1) + 1) $ drop (c1 - 1) ln
-    _ ->
-      let lns1 = drop (c1 - 1) (head lns) : tail lns
+    hd : tl ->
+      let lns1 = drop (c1 - 1) hd : tl
           lns2 = init lns1 ++ [take (c2 + 1) (last lns1)]
        in foldl1 (\xs ys -> xs ++ "\n" ++ ys) lns2
   where