diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+0.28.2
+ - Switch to language-c 0.6 [#176]
 0.28.1
  - Switch to language-c 0.5 [#157]
  - Fix class hook problem with imports [#155]
diff --git a/c2hs.cabal b/c2hs.cabal
--- a/c2hs.cabal
+++ b/c2hs.cabal
@@ -1,12 +1,12 @@
 Name:           c2hs
-Version:        0.28.1
+Version:        0.28.2
 License:        GPL-2
 License-File:   COPYING
 Copyright:      Copyright (c) 1999-2007 Manuel M T Chakravarty
                               2005-2013 Duncan Coutts
                               2008      Benedikt Huber
 Author:         Manuel M T Chakravarty
-Maintainer:     chak@cse.unsw.edu.au, duncan@community.haskell.org, ian@skybluetrades.net
+Maintainer:     chak@cse.unsw.edu.au, duncan@community.haskell.org, ian@skybluetrades.net, aditya.siram@gmail.com
 Stability:      Stable
 Homepage:       https://github.com/haskell/c2hs
 Bug-Reports:    https://github.com/haskell/c2hs/issues
@@ -101,6 +101,7 @@
   tests/bugs/issue-151/*.chs tests/bugs/issue-151/*.h
   tests/bugs/issue-152/*.chs tests/bugs/issue-152/*.h
   tests/bugs/issue-155/*.chs tests/bugs/issue-155/*.h
+  tests/bugs/issue-180/*.chs tests/bugs/issue-180/*.h
 
 source-repository head
   type:         git
@@ -111,7 +112,7 @@
 Executable c2hs
     Build-Depends:  base >= 2 && < 5,
                     bytestring,
-                    language-c >= 0.5 && < 0.6,
+                    language-c >= 0.6 && < 0.7,
                     filepath,
                     dlist
 
diff --git a/src/C2HS/Gen/Bind.hs b/src/C2HS/Gen/Bind.hs
--- a/src/C2HS/Gen/Bind.hs
+++ b/src/C2HS/Gen/Bind.hs
@@ -521,7 +521,9 @@
               else doSplit 0 mln True (f:acc) fs'
           | otherwise = if null (dropWhile isSpace s) || isJust mln
                         then doSplit 0 mln wh (f:acc) fs'
-                        else doSplit 0 (Just $ posRow pos) wh (f:acc) fs'
+                        else doSplit 0 mln' wh (f:acc) fs'
+                          where mln' | isSourcePos pos = Just $ posRow pos
+                                     | otherwise = Nothing
         doSplit cdep mln wh acc (f@(CHSVerb s _) : fs')
           | s == "-}" = doSplit (cdep-1) mln wh (f:acc) fs'
           | s == "{-" = doSplit (cdep+1) mln wh (f:acc) fs'
@@ -1438,8 +1440,12 @@
       parms'   <- addDft parms'' cts
       return (CHSParm imMarsh' hsTy True omMarsh' False p c : parms')
     addDft [] [] = return []
-    addDft ((CHSParm _ _ _ _ _ pos' _):_) [] =
+    addDft (CHSPlusParm _:_) [] =
+      marshArgMismatchErr pos "This parameter is in excess of the C arguments."
+    addDft (CHSParm _ _ _ _ _ pos' _:_) [] =
       marshArgMismatchErr pos' "This parameter is in excess of the C arguments."
+    addDft (CHSParm _ _ True _ _ pos' _:_) [_] =
+      marshArgMismatchErr pos' "This parameter is in excess of the C arguments."
     addDft [] (_:_) =
       marshArgMismatchErr pos "Parameter marshallers are missing."
     --
@@ -2303,7 +2309,7 @@
     hasStdCallAttr = any isStdCallAttr . funAttrs
 
     funAttrs (CDecl specs declrs _) =
-      let (_,attrs',_,_,_) = partitionDeclSpecs specs
+      let (_,attrs',_,_,_,_) = partitionDeclSpecs specs
        in attrs' ++ funEndAttrs declrs ++ funPtrAttrs declrs
 
     -- attrs after the function name, e.g. void foo() __attribute__((...));
diff --git a/src/Data/NameSpaces.hs b/src/Data/NameSpaces.hs
--- a/src/Data/NameSpaces.hs
+++ b/src/Data/NameSpaces.hs
@@ -77,7 +77,7 @@
 --
 -- * if the identfier is already declared, the resulting name space contains
 --   the new binding and the second component of the result contains the
---   definition declared previosuly (which is henceforth not contained in the
+--   definition declared previously (which is henceforth not contained in the
 --   name space anymore)
 --
 defGlobal :: NameSpace a -> Ident -> a -> (NameSpace a, Maybe a)
@@ -105,7 +105,7 @@
 --
 -- * if the identfier is already declared, the resulting name space contains
 --   the new binding and the second component of the result contains the
---   definition declared previosuly (which is henceforth not contained in the
+--   definition declared previously (which is henceforth not contained in the
 --   name space anymore)
 --
 defLocal :: NameSpace a -> Ident -> a -> (NameSpace a, Maybe a)
diff --git a/tests/bugs/issue-128/issue128.c b/tests/bugs/issue-128/issue128.c
--- a/tests/bugs/issue-128/issue128.c
+++ b/tests/bugs/issue-128/issue128.c
@@ -20,6 +20,7 @@
   tststruct *p = (tststruct *)malloc(sizeof(tststruct));
   p->a = ain;
   p->b = false;
+  return p;
 }
 
 void free_tststruct(tststruct *s)
diff --git a/tests/bugs/issue-180/Issue180.chs b/tests/bugs/issue-180/Issue180.chs
new file mode 100644
--- /dev/null
+++ b/tests/bugs/issue-180/Issue180.chs
@@ -0,0 +1,13 @@
+module Main where
+
+#include "issue180.h"
+
+marshalIn = undefined
+
+{#fun pure test as test1
+  { 'marshalIn'* `Int'&} -> `()' #}
+
+main :: IO ()
+main = do
+  test
+  print "OK"
diff --git a/tests/bugs/issue-180/issue180.h b/tests/bugs/issue-180/issue180.h
new file mode 100644
--- /dev/null
+++ b/tests/bugs/issue-180/issue180.h
@@ -0,0 +1,1 @@
+void test(int arg);
diff --git a/tests/test-bugs.hs b/tests/test-bugs.hs
--- a/tests/test-bugs.hs
+++ b/tests/test-bugs.hs
@@ -92,6 +92,7 @@
     , testCase "Issue #151" issue151
     , testCase "Issue #152" issue152
     , testCase "Issue #155" issue155
+    , testCase "Issue #180" issue180
     ] ++
     -- Some tests that won't work on Windows.
     if os /= "cygwin32" && os /= "mingw32"
@@ -111,6 +112,17 @@
   res <- absPath "./Capital" >>= cmd
   let expected = ["upper C();", "lower c();", "upper C();"]
   liftIO $ assertBool "" (T.lines res == expected)
+
+issue180 :: Assertion
+issue180 = c2hsShelly $ chdir "tests/bugs/issue-180" $ do
+  mapM_ rm_f ["Issue180.chs.h"]
+  errExit False $ do
+    run "c2hs" [toTextIgnore "Issue180.chs"]
+  code <- lastExitCode
+  liftIO $ assertEqual "error code" 1 code
+  stderr <- lastStderr
+  let excessMsgCount = T.count "excess of the C arguments" stderr
+  liftIO $ assertBool "correct error message" (excessMsgCount == 1)
 
 issue155 :: Assertion
 issue155 = c2hsShelly $ chdir "tests/bugs/issue-155" $ do
