diff --git a/hgeos.cabal b/hgeos.cabal
--- a/hgeos.cabal
+++ b/hgeos.cabal
@@ -1,5 +1,5 @@
 name:                 hgeos
-version:              0.1.7.3
+version:              0.1.7.4
 synopsis:             Simple Haskell bindings to GEOS C API
 description:
   Simple Haskell bindings to the <https://trac.osgeo.org/geos/ GEOS>
diff --git a/src/lib/Data/Geolocation/GEOS.hs b/src/lib/Data/Geolocation/GEOS.hs
--- a/src/lib/Data/Geolocation/GEOS.hs
+++ b/src/lib/Data/Geolocation/GEOS.hs
@@ -161,7 +161,7 @@
     withArrayLen (map geometryRawPtr gs) $ \count array ->
         checkAndTrackGeometry
             sr
-            (\hCtx -> c_GEOSGeom_createCollection_r hCtx (fromIntegral $ fromEnum geometryType) nullPtr (fromIntegral count))
+            (\hCtx -> c_GEOSGeom_createCollection_r hCtx (fromIntegral $ fromEnum geometryType) array (fromIntegral count))
 
 -- |Creates an empty 'CoordinateSequence' instance
 createCoordSeq :: Context -> Word -> Word -> IO (Maybe CoordinateSequence)
diff --git a/src/test/GEOSTest/TransAPI.hs b/src/test/GEOSTest/TransAPI.hs
--- a/src/test/GEOSTest/TransAPI.hs
+++ b/src/test/GEOSTest/TransAPI.hs
@@ -3,7 +3,7 @@
 import Control.Monad
 import Control.Monad.Trans
 import Control.Monad.Trans.Maybe
-import Data.Geolocation.GEOS (Context, Geometry)
+import Data.Geolocation.GEOS (Context, Geometry, GeometryType (..))
 import Data.Geolocation.GEOS.Trans
 import Data.Maybe
 
@@ -73,6 +73,14 @@
         polygon <- createPolygonM shell [hole]
         str3 <- writeGeometryM writer polygon
         lift $ putStrLn str3
+
+        coll <- createCollectionM MultiPolygon [polygon]
+        str4 <- writeGeometryM writer coll
+        lift $ putStrLn str4
+
+        p <- createEmptyPolygonM ctx
+        str5 <- writeGeometryM writer p
+        lift $ putStrLn str5
 
     case result of
          Left m -> error $ "TransAPI.demo failed: " ++ m
