Index: capi/geos_c.cpp
===================================================================
--- capi/geos_c.cpp	(revision 2301)
+++ capi/geos_c.cpp	(working copy)
@@ -460,6 +460,12 @@
     return GEOSGetSRID_r( handle, g1 );
 }
 
+void
+GEOSSetSRID(Geometry *g, int srid)
+{
+    GEOSSetSRID_r( handle, g, srid );
+}
+
 char 
 GEOSHasZ(const Geometry *g)
 {
Index: capi/geos_ts_c.cpp
===================================================================
--- capi/geos_ts_c.cpp	(revision 2301)
+++ capi/geos_ts_c.cpp	(working copy)
@@ -1578,17 +1578,6 @@
     }
 }
 
-void
-GEOSSetSRID(Geometry *g, int SRID)
-{
-    assert(0 != g);
-    if (0 != g)
-    {
-        g->setSRID(SRID);
-    }
-}
-
-
 int
 GEOSGetNumCoordinates_r(GEOSContextHandle_t extHandle, const Geometry *g1)
 {
@@ -2181,6 +2170,35 @@
     return 0;
 }
 
+void
+GEOSSetSRID_r(GEOSContextHandle_t extHandle, Geometry *g, int srid)
+{
+    assert(0 != g);
+
+    if ( 0 == extHandle )
+    {
+        return;
+    }
+
+    GEOSContextHandleInternal_t *handle = 0;
+    handle = reinterpret_cast<GEOSContextHandleInternal_t*>(extHandle);
+    if ( 0 != handle->initialized && 0 != g)
+    {
+        try
+        {
+            g->setSRID(srid);
+        }
+        catch (const std::exception &e)
+        {
+            handle->ERROR_MESSAGE("%s", e.what());
+        }
+        catch (...)
+        {
+            handle->ERROR_MESSAGE("Unknown exception thrown");
+        }
+    }
+}
+
 const char* GEOSversion()
 {
     return GEOS_CAPI_VERSION;
Index: capi/geos_c.h.in
===================================================================
--- capi/geos_c.h.in	(revision 2301)
+++ capi/geos_c.h.in	(working copy)
@@ -591,13 +591,14 @@
 /* Return 0 on exception */
 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g1);
 
-extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
-
 extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
                                   const GEOSGeometry* g1);
 
-extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
+extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int srid);
 
+extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
+                                   GEOSGeometry* g, int srid);
+
 /* May be called on all geometries in GEOS 3.x, returns -1 on error and 1
  * for non-multi geometries. Older GEOS versions only accept 
  * GeometryCollections or Multi* geometries here, and are likely to crash

