]> granicus.if.org Git - postgis/commitdiff
Plug some memory leaks in the unit tests, to help finding lower-level ones...
authorSandro Santilli <strk@keybit.net>
Mon, 4 Jul 2011 12:29:40 +0000 (12:29 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 4 Jul 2011 12:29:40 +0000 (12:29 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@7578 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/cunit/cu_algorithm.c
liblwgeom/cunit/cu_geodetic.c
liblwgeom/cunit/cu_homogenize.c
liblwgeom/cunit/cu_libgeom.c
liblwgeom/cunit/cu_print.c
liblwgeom/cunit/cu_surface.c

index 5aba73dd7661e09fb2b17987b77f624f9cbf18b1..acfc308554ee73ba5c475055df9816950b915bb1 100644 (file)
@@ -770,7 +770,7 @@ static void test_geohash(void)
        geohash = lwgeom_geohash((LWGEOM*)lwmline,0);
        //printf("geohash %s\n",geohash);
        CU_ASSERT_STRING_EQUAL(geohash, "ss0");
-       lwfree(lwmline);
+       lwgeom_free(lwmline);
        lwfree(geohash);
 }
 
@@ -783,27 +783,27 @@ static void test_isclosed(void)
        /* Not Closed on 2D */
        geom = lwgeom_from_ewkt("LINESTRING(1 2,3 4)", PARSER_CHECK_NONE);
        CU_ASSERT(!lwline_is_closed((LWLINE *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 2D */
        geom = lwgeom_from_ewkt("LINESTRING(1 2,3 4,1 2)", PARSER_CHECK_NONE);
        CU_ASSERT(lwline_is_closed((LWLINE *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Not closed on 3D */
        geom = lwgeom_from_ewkt("LINESTRING(1 2 3,4 5 6)", PARSER_CHECK_NONE);
        CU_ASSERT(!lwline_is_closed((LWLINE *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 3D */
        geom = lwgeom_from_ewkt("LINESTRING(1 2 3,4 5 6,1 2 3)", PARSER_CHECK_NONE);
        CU_ASSERT(lwline_is_closed((LWLINE *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 4D, even if M is not the same */
        geom = lwgeom_from_ewkt("LINESTRING(1 2 3 4,5 6 7 8,1 2 3 0)", PARSER_CHECK_NONE);
        CU_ASSERT(lwline_is_closed((LWLINE *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
 
        /* CIRCULARSTRING */
@@ -811,27 +811,27 @@ static void test_isclosed(void)
        /* Not Closed on 2D */
        geom = lwgeom_from_ewkt("CIRCULARSTRING(1 2,3 4,5 6)", PARSER_CHECK_NONE);
        CU_ASSERT(!lwcircstring_is_closed((LWCIRCSTRING *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 2D */
        geom = lwgeom_from_ewkt("CIRCULARSTRING(1 2,3 4,1 2)", PARSER_CHECK_NONE);
        CU_ASSERT(lwcircstring_is_closed((LWCIRCSTRING *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Not closed on 3D */
        geom = lwgeom_from_ewkt("CIRCULARSTRING(1 2 3,4 5 6,7 8 9)", PARSER_CHECK_NONE);
        CU_ASSERT(!lwcircstring_is_closed((LWCIRCSTRING *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 3D */
        geom = lwgeom_from_ewkt("CIRCULARSTRING(1 2 3,4 5 6,1 2 3)", PARSER_CHECK_NONE);
        CU_ASSERT(lwcircstring_is_closed((LWCIRCSTRING *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 4D, even if M is not the same */
        geom = lwgeom_from_ewkt("CIRCULARSTRING(1 2 3 4,5 6 7 8,1 2 3 0)", PARSER_CHECK_NONE);
        CU_ASSERT(lwcircstring_is_closed((LWCIRCSTRING *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
 
        /* COMPOUNDCURVE */
@@ -839,42 +839,43 @@ static void test_isclosed(void)
        /* Not Closed on 2D */
        geom = lwgeom_from_ewkt("COMPOUNDCURVE(CIRCULARSTRING(1 2,3 4,1 2),(1 2,7 8,5 6))", PARSER_CHECK_NONE);
        CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        geom = lwgeom_from_ewkt("COMPOUNDCURVE((1 2,3 4,1 2),CIRCULARSTRING(1 2,7 8,5 6))", PARSER_CHECK_NONE);
        CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 2D */
        geom = lwgeom_from_ewkt("COMPOUNDCURVE(CIRCULARSTRING(1 2,3 4,5 6), (5 6,7 8,1 2))", PARSER_CHECK_NONE);
        CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        geom = lwgeom_from_ewkt("COMPOUNDCURVE((1 2,3 4,5 6),CIRCULARSTRING(5 6,7 8,1 2))", PARSER_CHECK_NONE);
        CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Not Closed on 3D */
        geom = lwgeom_from_ewkt("COMPOUNDCURVE(CIRCULARSTRING(1 2 3,4 5 6,1 2 3),(1 2 3,7 8 9,10 11 12))", PARSER_CHECK_NONE);
        CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        geom = lwgeom_from_ewkt("COMPOUNDCURVE((1 2 3,4 5 6,1 2 3),CIRCULARSTRING(1 2 3,7 8 9,10 11 12))", PARSER_CHECK_NONE);
        CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 3D */
        geom = lwgeom_from_ewkt("COMPOUNDCURVE(CIRCULARSTRING(1 2 3,4 5 6,7 8 9),(7 8 9,10 11 12,1 2 3))", PARSER_CHECK_NONE);
        CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        geom = lwgeom_from_ewkt("COMPOUNDCURVE((1 2 3,4 5 6,7 8 9),CIRCULARSTRING(7 8 9,10 11 12,1 2 3))", PARSER_CHECK_NONE);
        CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
-       lwfree(geom);
+       lwgeom_free(geom);
 
        /* Closed on 4D, even if M is not the same */
        geom = lwgeom_from_ewkt("COMPOUNDCURVE((1 2 3 4,5 6 7 8,9 10 11 12),CIRCULARSTRING(9 10 11 12,13 14 15 16,1 2 3 0))", PARSER_CHECK_NONE);
        CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
+       lwgeom_free(geom);
 }
 
 /*
index 2f6845888e34b9a97aa521b0a59ed99b034031a3..364e5b9372e141432acd39fd898b520e7b097a2f 100644 (file)
@@ -460,16 +460,15 @@ static void test_edge_distance_to_edge(void)
 * Build LWGEOM on top of *aligned* structure so we can use the read-only
 * point access methods on them.
 */
-static LWGEOM* lwgeom_over_gserialized(char *wkt)
+static LWGEOM* lwgeom_over_gserialized(char *wkt, GSERIALIZED **g)
 {
        LWGEOM *lwg;
-       GSERIALIZED *g;
 
        lwg = lwgeom_from_ewkt(wkt, PARSER_CHECK_NONE);
        FLAGS_SET_GEODETIC(lwg->flags, 1);
-       g = gserialized_from_lwgeom(lwg, 1, 0);
+       *g = gserialized_from_lwgeom(lwg, 1, 0);
        lwgeom_free(lwg);
-       return lwgeom_from_gserialized(g);
+       return lwgeom_from_gserialized(*g);
 }
 
 static void test_lwgeom_check_geodetic(void)
@@ -495,19 +494,23 @@ static void test_lwgeom_check_geodetic(void)
 
        for ( i = 0; i < 6; i++ )
        {
-               geom = lwgeom_over_gserialized(ewkt[i]);
+               GSERIALIZED *g;
+               geom = lwgeom_over_gserialized(ewkt[i], &g);
                CU_ASSERT_EQUAL(lwgeom_check_geodetic(geom), LW_TRUE);
                lwgeom_free(geom);
+               lwfree(g);
        }
 
        for ( i = 6; i < 12; i++ )
        {
+               GSERIALIZED *g;
                //char *out_ewkt;
-               geom = lwgeom_over_gserialized(ewkt[i]);
+               geom = lwgeom_over_gserialized(ewkt[i], &g);
                CU_ASSERT_EQUAL(lwgeom_check_geodetic(geom), LW_FALSE);
                //out_ewkt = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
                //printf("%s\n", out_ewkt);
                lwgeom_free(geom);
+               lwfree(g);
        }
 
 }
@@ -539,7 +542,8 @@ static void test_gbox_calculation(void)
 
        for ( i = 0; i < 6; i++ )
        {
-               geom = lwgeom_over_gserialized(ewkt[i]);
+               GSERIALIZED *g;
+               geom = lwgeom_over_gserialized(ewkt[i], &g);
                lwgeom_calculate_gbox_cartesian(geom, gbox);
                box3d = lwgeom_compute_box3d(geom);
                //printf("%g %g\n", gbox->xmin, box3d->xmin);
@@ -547,7 +551,9 @@ static void test_gbox_calculation(void)
                CU_ASSERT_EQUAL(gbox->xmax, box3d->xmax);
                CU_ASSERT_EQUAL(gbox->ymin, box3d->ymin);
                CU_ASSERT_EQUAL(gbox->ymax, box3d->ymax);
+               lwgeom_free(geom);
                lwfree(box3d);
+               lwfree(g);
        }
        lwfree(gbox);
 }
index b7d9f3a532c82ea8953a3c5515675e660228ce42..bd5d2839a76d12ba5506ce1c4b9be9a686304838 100644 (file)
@@ -36,14 +36,19 @@ static void do_geom_test(char * in, char * out)
 static void do_coll_test(char * in, char * out)
 {
        LWGEOM *g, *h;
+       char *tmp;
 
        g = lwgeom_from_ewkt(in, PARSER_CHECK_NONE);
        h = lwcollection_homogenize((LWCOLLECTION *) g);
-       if (strcmp(lwgeom_to_ewkt(h, PARSER_CHECK_NONE), out))
+       tmp = lwgeom_to_ewkt(h, PARSER_CHECK_NONE);
+       if (strcmp(tmp, out))
                fprintf(stderr, "\nIn:   %s\nOut:  %s\nTheo: %s\n",
-                       in, lwgeom_to_ewkt(h, PARSER_CHECK_NONE), out);
-       CU_ASSERT_STRING_EQUAL(lwgeom_to_ewkt(h, PARSER_CHECK_NONE), out);
-       lwfree(g);
+                       in, tmp, out);
+       lwfree(tmp);
+       tmp = lwgeom_to_ewkt(h, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL(tmp, out);
+       lwfree(tmp);
+       lwgeom_free(g);
        lwgeom_free(h);
 }
 
index aec26a0f1099878f81bd4be73b4c5719a323a700..778497bdc0979d20a63fe28f7a3b0fbc8bf001a6 100644 (file)
@@ -221,7 +221,7 @@ static void test_lwgeom_from_gserialized(void)
                out_ewkt = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
                //printf("\n in = %s\nout = %s\n", in_ewkt, out_ewkt);
                CU_ASSERT_STRING_EQUAL(in_ewkt, out_ewkt);
-               lwgeom_release(geom);
+               lwgeom_free(geom);
                lwfree(g);
                lwfree(out_ewkt);
        }
index c9043283480156340928c452e327e9c08c5d1a9c..bca60d90de33b7f442dd4a1d419db3d23a3f8072 100644 (file)
@@ -38,13 +38,15 @@ static void test_lwprint_assert_format(char * point_wkt, const char * format, co
        {
                printf("\nAssert failed:\n\t%s\t(actual)\n\t%s\t(expected)\n", actual, expected);
        }
-       lwfree(test_point);
+       lwfree(actual);
+       lwgeom_free(test_point);
 }
 static void test_lwprint_assert_error(char * point_wkt, const char * format)
 {
        LWPOINT * test_point = (LWPOINT*)lwgeom_from_ewkt(point_wkt, PARSER_CHECK_NONE);
        cu_error_msg_reset();
-       lwpoint_to_latlon(test_point, format);
+       char* tmp = lwpoint_to_latlon(test_point, format);
+       lwfree(tmp);
        if (0 == strlen(cu_error_msg))
        {
                printf("\nAssert failed:\n\tFormat [%s] did not generate an error.\n", format);
index 224657895f054cfab23191796a1a604c48c75cbb..97b1b21188e836fd5f4b88fe520b62f20226df43 100644 (file)
@@ -107,6 +107,7 @@ void tin_parse(void)
 {
        LWGEOM *geom;
        GSERIALIZED *g;
+       char *tmp;
 
        cu_error_msg_reset();   /* Because i don't trust that much prior tests...  ;) */
 
@@ -124,14 +125,18 @@ void tin_parse(void)
        geom = lwgeom_from_ewkt("TIN(((0 1,2 3,4 5,0 1)))", PARSER_CHECK_NONE);
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, TINTYPE);
-       CU_ASSERT_STRING_EQUAL("TIN(((0 1,2 3,4 5,0 1)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("TIN(((0 1,2 3,4 5,0 1)))", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* 3DM */
        geom = lwgeom_from_ewkt("TINM(((0 1 2,3 4 5,6 7 8,0 1 2)))", PARSER_CHECK_NONE);
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, TINTYPE);
-       CU_ASSERT_STRING_EQUAL("TINM(((0 1 2,3 4 5,6 7 8,0 1 2)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("TINM(((0 1 2,3 4 5,6 7 8,0 1 2)))", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* ERROR: a missing Z values */
@@ -191,7 +196,9 @@ void tin_parse(void)
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, TINTYPE);
        CU_ASSERT_EQUAL(geom->srid, SRID_UNKNOWN);
-       CU_ASSERT_STRING_EQUAL("TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* A 4D tetrahedron */
@@ -200,7 +207,9 @@ void tin_parse(void)
        CU_ASSERT_EQUAL(geom->type, TINTYPE);
        CU_ASSERT_EQUAL(FLAGS_GET_M(geom->flags), 1);
        CU_ASSERT_EQUAL(geom->srid, SRID_UNKNOWN);
-       CU_ASSERT_STRING_EQUAL("TIN(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("TIN(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* explicit SRID */
@@ -208,7 +217,9 @@ void tin_parse(void)
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, TINTYPE);
        CU_ASSERT_EQUAL(geom->srid, 4326);
-       CU_ASSERT_STRING_EQUAL("SRID=4326;TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("SRID=4326;TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* geography support */
@@ -291,6 +302,7 @@ void polyhedralsurface_parse(void)
 {
        LWGEOM *geom;
        GSERIALIZED *g;
+       char *tmp;
 
        cu_error_msg_reset();   /* Because i don't trust that much prior tests...  ;) */
 
@@ -298,16 +310,24 @@ void polyhedralsurface_parse(void)
        geom = lwgeom_from_ewkt("POLYHEDRALSURFACE(((0 1,2 3,4 5,0 1)))", PARSER_CHECK_NONE);
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, POLYHEDRALSURFACETYPE);
-       CU_ASSERT_STRING_EQUAL("010D00000001000000010300000001000000040000000000000000000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000000000000000000000F03F", lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1));
-       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 1,2 3,4 5,0 1)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
+       tmp = lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1);
+       CU_ASSERT_STRING_EQUAL("010D00000001000000010300000001000000040000000000000000000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000000000000000000000F03F", tmp);
+       lwfree(tmp);
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 1,2 3,4 5,0 1)))", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* 3DM */
        geom = lwgeom_from_ewkt("POLYHEDRALSURFACEM(((0 1 2,3 4 5,6 7 8,0 1 2)))", PARSER_CHECK_NONE);
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, POLYHEDRALSURFACETYPE);
-       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACEM(((0 1 2,3 4 5,6 7 8,0 1 2)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
-       CU_ASSERT_STRING_EQUAL("010D00004001000000010300004001000000040000000000000000000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C4000000000000020400000000000000000000000000000F03F0000000000000040", lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACEM(((0 1 2,3 4 5,6 7 8,0 1 2)))", tmp);
+       lwfree(tmp);
+       tmp = lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1);
+       CU_ASSERT_STRING_EQUAL("010D00004001000000010300004001000000040000000000000000000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C4000000000000020400000000000000000000000000000F03F0000000000000040", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* ERROR: a missing Z values */
@@ -320,8 +340,12 @@ void polyhedralsurface_parse(void)
        geom = lwgeom_from_ewkt("POLYHEDRALSURFACE(((0 1 2,3 4 5,6 7 8,0 1 2),(9 10 11,12 13 14,15 16 17,9 10 11)))", PARSER_CHECK_NONE);
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, POLYHEDRALSURFACETYPE);
-       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 1 2,3 4 5,6 7 8,0 1 2),(9 10 11,12 13 14,15 16 17,9 10 11)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
-       CU_ASSERT_STRING_EQUAL("010D00008001000000010300008002000000040000000000000000000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C4000000000000020400000000000000000000000000000F03F00000000000000400400000000000000000022400000000000002440000000000000264000000000000028400000000000002A400000000000002C400000000000002E4000000000000030400000000000003140000000000000224000000000000024400000000000002640", lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 1 2,3 4 5,6 7 8,0 1 2),(9 10 11,12 13 14,15 16 17,9 10 11)))", tmp);
+       lwfree(tmp);
+       tmp = lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1);
+       CU_ASSERT_STRING_EQUAL("010D00008001000000010300008002000000040000000000000000000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C4000000000000020400000000000000000000000000000F03F00000000000000400400000000000000000022400000000000002440000000000000264000000000000028400000000000002A400000000000002C400000000000002E4000000000000030400000000000003140000000000000224000000000000024400000000000002640", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* ERROR: non closed rings */
@@ -364,8 +388,12 @@ void polyhedralsurface_parse(void)
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, POLYHEDRALSURFACETYPE);
        CU_ASSERT_EQUAL(geom->srid, SRID_UNKNOWN);
-       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
-       CU_ASSERT_STRING_EQUAL("010D000080040000000103000080010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000010300008001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000001030000800100000004000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000001030000800100000004000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000", lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", tmp);
+       lwfree(tmp);
+       tmp = lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1);
+       CU_ASSERT_STRING_EQUAL("010D000080040000000103000080010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000010300008001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000001030000800100000004000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000001030000800100000004000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
        /* A 4D tetrahedron */
@@ -374,8 +402,12 @@ void polyhedralsurface_parse(void)
        CU_ASSERT_EQUAL(geom->type, POLYHEDRALSURFACETYPE);
        CU_ASSERT_EQUAL(FLAGS_GET_M(geom->flags), 1);
        CU_ASSERT_EQUAL(geom->srid, SRID_UNKNOWN);
-       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
-       CU_ASSERT_STRING_EQUAL("010D0000C00400000001030000C00100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000F03F00000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000001030000C0010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000F03F000000000000000000000000000000000000000000001040000000000000000000000000000000000000000000000000000000000000000001030000C001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000001840000000000000000000000000000000000000000000000000000000000000000001030000C00100000004000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F000000000000000000000000000000000000000000000000", lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("POLYHEDRALSURFACE(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))", tmp);
+       lwfree(tmp);
+       tmp = lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1);
+       CU_ASSERT_STRING_EQUAL("010D0000C00400000001030000C00100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000F03F00000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000001030000C0010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000F03F000000000000000000000000000000000000000000001040000000000000000000000000000000000000000000000000000000000000000001030000C001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000001840000000000000000000000000000000000000000000000000000000000000000001030000C00100000004000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F000000000000000000000000000000000000000000000000", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);
 
 
@@ -384,8 +416,12 @@ void polyhedralsurface_parse(void)
        CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
        CU_ASSERT_EQUAL(geom->type, POLYHEDRALSURFACETYPE);
        CU_ASSERT_EQUAL(geom->srid, 4326);
-       CU_ASSERT_STRING_EQUAL("SRID=4326;POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", lwgeom_to_ewkt(geom, PARSER_CHECK_NONE));
-       CU_ASSERT_STRING_EQUAL("010D0000A0E6100000040000000103000080010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000010300008001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000001030000800100000004000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000001030000800100000004000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000", lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1));
+       tmp = lwgeom_to_ewkt(geom, PARSER_CHECK_NONE);
+       CU_ASSERT_STRING_EQUAL("SRID=4326;POLYHEDRALSURFACE(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))", tmp);
+       lwfree(tmp);
+       tmp = lwgeom_to_hexwkb_old(geom, PARSER_CHECK_NONE, (char) -1);
+       CU_ASSERT_STRING_EQUAL("010D0000A0E6100000040000000103000080010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000010300008001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000001030000800100000004000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000F03F00000000000000000000000000000000000000000000000001030000800100000004000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000000", tmp);
+       lwfree(tmp);
        lwgeom_free(geom);