]> granicus.if.org Git - postgis/commitdiff
WKB_recv: set StringInfo cursor to the end of StringInfo buf as required by postgres...
authorSandro Santilli <strk@keybit.net>
Tue, 9 Dec 2003 11:13:41 +0000 (11:13 +0000)
committerSandro Santilli <strk@keybit.net>
Tue, 9 Dec 2003 11:13:41 +0000 (11:13 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@403 b70326c6-7e19-0410-871a-916f4a2858ee

postgis_inout.c

index 4ec651de6a1690fd25fcca233ab5a86e5a3d5950..4f06075593a0b56eccf6b73a90e5fa140e965649 100644 (file)
@@ -11,6 +11,9 @@
  *
  **********************************************************************
  * $Log$
+ * Revision 1.31  2003/12/09 11:13:41  strk
+ * WKB_recv: set StringInfo cursor to the end of StringInfo buf as required by postgres backend
+ *
  * Revision 1.30  2003/12/08 17:57:36  strk
  * Binary WKB input function built only when USE_VERSION > 73. Making some modifications based on reported failures
  *
@@ -3546,6 +3549,12 @@ Datum WKB_out(PG_FUNCTION_ARGS)
 
 
 #if USE_VERSION > 73
+/*
+ * This function must advance the StringInfo.cursor pointer
+ * and leave it at the end of StringInfo.buf. If it fails
+ * to do so the backend will raise an exception with message:
+ * ERROR:  incorrect binary data format in bind parameter #
+ */
 PG_FUNCTION_INFO_V1(WKB_recv);
 Datum WKB_recv(PG_FUNCTION_ARGS)
 {
@@ -3557,6 +3566,9 @@ Datum WKB_recv(PG_FUNCTION_ARGS)
        result = (WellKnownBinary *)palloc(buf->len);
        memcpy(result, buf->data, buf->len);
 
+       /* Set cursor to the end of buffer (so the backend is happy) */
+       buf->cursor = buf->len;
+
        elog(NOTICE, "WKB_recv end (returning result)");
         PG_RETURN_POINTER(result);
 }