[postgis-tickets] [SCM] PostGIS branch stable-3.0 updated. 3.0.1-42-g3fc5998

git at osgeo.org git at osgeo.org
Fri Aug 14 11:24:24 PDT 2020


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, stable-3.0 has been updated
       via  3fc59980780763c68ba9bc5ff71bd67a959794c3 (commit)
      from  aa4642fd4595569a15b048d6e7c20acb7916e16b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3fc59980780763c68ba9bc5ff71bd67a959794c3
Author: Regina Obe <lr at pcorp.us>
Date:   Fri Aug 14 14:24:03 2020 -0400

    Backport cunit memory fixes and make tests same as 3.1

diff --git a/liblwgeom/cunit/cu_split.c b/liblwgeom/cunit/cu_split.c
index d637051..b7bcb1e 100644
--- a/liblwgeom/cunit/cu_split.c
+++ b/liblwgeom/cunit/cu_split.c
@@ -15,6 +15,7 @@
 
 #include "liblwgeom.h"
 #include "liblwgeom_internal.h"
+#include "../lwgeom_geos.h"
 
 static void test_lwline_split_by_point_to(void)
 {
@@ -79,187 +80,166 @@ static void test_lwline_split_by_point_to(void)
 
 static void test_lwgeom_split(void)
 {
-	LWGEOM *geom, *blade, *ret;
+	LWGEOM *geom, *blade, *ret, *tmp1, *tmp2;
 	char *wkt, *in_wkt;
 
-	geom = lwgeom_from_wkt(
-"MULTILINESTRING((-5 -2,0 0),(0 0,10 10))",
-	LW_PARSER_CHECK_NONE);
+	geom = lwgeom_from_wkt("MULTILINESTRING((-5 -2,0 0),(0 0,10 10))", LW_PARSER_CHECK_NONE);
 	CU_ASSERT(geom != NULL);
-	blade = lwgeom_from_wkt(
-		"POINT(0 0)",
-		LW_PARSER_CHECK_NONE);
+	blade = lwgeom_from_wkt("POINT(0 0)", LW_PARSER_CHECK_NONE);
 	CU_ASSERT(blade != NULL);
 	ret = lwgeom_split(geom, blade);
 	CU_ASSERT(ret != NULL);
 	wkt = lwgeom_to_ewkt(ret);
 	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(-5 -2,0 0),LINESTRING(0 0,10 10))";
-        if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-	CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
 	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
         /* See #1311 */
-        geom = lwgeom_from_wkt(
-                "LINESTRING(0 0,10 0,20 4,0 3)",
-                LW_PARSER_CHECK_NONE);
-        CU_ASSERT(geom != NULL);
-        blade = lwgeom_from_wkt("POINT(10 0)", LW_PARSER_CHECK_NONE);
-        ret = lwgeom_split(geom, blade);
-        CU_ASSERT(ret != NULL);
-        wkt = lwgeom_to_ewkt(ret);
+	geom = lwgeom_from_wkt("LINESTRING(0 0,10 0,20 4,0 3)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT(geom != NULL);
+	blade = lwgeom_from_wkt("POINT(10 0)", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	CU_ASSERT(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
 	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,10 0),LINESTRING(10 0,20 4,0 3))";
-        if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-        CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-        lwfree(wkt);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
   /* See #2528 (1) -- memory leak test, needs valgrind to check */
-  geom = lwgeom_from_wkt("SRID=1;LINESTRING(0 1,10 1)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT(geom != NULL);
-  blade = lwgeom_from_wkt("LINESTRING(7 0,7 3)", LW_PARSER_CHECK_NONE);
-  ret = lwgeom_normalize(lwgeom_split(geom, blade));
-  CU_ASSERT(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  in_wkt = lwgeom_to_ewkt(lwgeom_normalize(
-      lwgeom_from_wkt("SRID=1;GEOMETRYCOLLECTION(LINESTRING(0 1,7 1),LINESTRING(7 1,10 1))",
-						LW_PARSER_CHECK_NONE)));
-  ;
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	geom = lwgeom_from_wkt("SRID=1;LINESTRING(0 1,10 1)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT(geom != NULL);
+	blade = lwgeom_from_wkt("LINESTRING(7 0,7 3)", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	CU_ASSERT(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	in_wkt = "SRID=1;GEOMETRYCOLLECTION(LINESTRING(0 1,7 1),LINESTRING(7 1,10 1))";
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
   /* See #2528 (2) -- memory leak test, needs valgrind to check */
-  geom = lwgeom_from_wkt("SRID=1;POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))", LW_PARSER_CHECK_NONE);
-  CU_ASSERT(geom != NULL);
-  blade = lwgeom_from_wkt("LINESTRING(7 0,7 20)", LW_PARSER_CHECK_NONE);
-  ret = lwgeom_normalize(lwgeom_split(geom, blade));
-  CU_ASSERT(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  in_wkt = lwgeom_to_ewkt(lwgeom_normalize(
-      lwgeom_from_wkt("SRID=1;GEOMETRYCOLLECTION(POLYGON((7 1,0 1,0 10,7 10,7 1)),POLYGON((7 10,10 10,10 1,7 1,7 10)))",
-		      LW_PARSER_CHECK_NONE)));
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	geom = lwgeom_from_wkt("SRID=1;POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))", LW_PARSER_CHECK_NONE);
+	CU_ASSERT(geom != NULL);
+	blade = lwgeom_from_wkt("LINESTRING(7 0,7 20)", LW_PARSER_CHECK_NONE);
+	tmp1 = lwgeom_split(geom, blade);
+	ret = lwgeom_normalize(tmp1);
+	lwgeom_free(tmp1);
+	CU_ASSERT(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	tmp1 = lwgeom_from_wkt(
+	    "SRID=1;GEOMETRYCOLLECTION(POLYGON((7 1,0 1,0 10,7 10,7 1)),POLYGON((7 10,10 10,10 1,7 1,7 10)))",
+	    LW_PARSER_CHECK_NONE);
+	tmp2 = lwgeom_normalize(tmp1);
+	in_wkt = lwgeom_to_ewkt(tmp2);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
+	lwfree(in_wkt);
+	lwgeom_free(tmp1);
+	lwgeom_free(tmp2);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
   /* Split line by multiline */
-  geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT_FATAL(geom != NULL);
-  blade = lwgeom_from_wkt("MULTILINESTRING((1 1,1 -1),(2 1,2 -1,3 -1,3 1))",
-    LW_PARSER_CHECK_NONE);
-  ret = lwgeom_split(geom, blade);
-  if ( ! ret ) printf("%s", cu_error_msg);
-  CU_ASSERT_FATAL(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  CU_ASSERT_FATAL(wkt != NULL);
+	geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_FATAL(geom != NULL);
+	blade = lwgeom_from_wkt("MULTILINESTRING((1 1,1 -1),(2 1,2 -1,3 -1,3 1))", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	if (!ret)
+		printf("%s", cu_error_msg);
+	CU_ASSERT_FATAL(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	CU_ASSERT_FATAL(wkt != NULL);
 	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))";
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
   /* Split line by polygon (boundary) */
-  geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT_FATAL(geom != NULL);
-  blade = lwgeom_from_wkt(
-"POLYGON((1 -2,1 1,2 1,2 -1,3 -1,3 1,11 1,11 -2,1 -2))",
-    LW_PARSER_CHECK_NONE);
-  ret = lwgeom_normalize(lwgeom_split(geom, blade));
-  if ( ! ret ) printf("%s", cu_error_msg);
-  CU_ASSERT_FATAL(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  CU_ASSERT_FATAL(wkt != NULL);
-  in_wkt = lwgeom_to_ewkt(lwgeom_normalize(lwgeom_from_wkt(
-      "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))",
-      LW_PARSER_CHECK_NONE)));
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_FATAL(geom != NULL);
+	blade = lwgeom_from_wkt("POLYGON((1 -2,1 1,2 1,2 -1,3 -1,3 1,11 1,11 -2,1 -2))", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	if (!ret)
+		printf("%s", cu_error_msg);
+	CU_ASSERT_FATAL(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	CU_ASSERT_FATAL(wkt != NULL);
+	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))";
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
-  /* Split line by EMPTY polygon (boundary) */
-  geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT_FATAL(geom != NULL);
-  blade = lwgeom_from_wkt("POLYGON EMPTY", LW_PARSER_CHECK_NONE);
-  ret = lwgeom_split(geom, blade);
-  if ( ! ret ) printf("%s", cu_error_msg);
-  CU_ASSERT_FATAL(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  CU_ASSERT_FATAL(wkt != NULL);
+	/* Split line by EMPTY polygon (boundary) */
+	geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_FATAL(geom != NULL);
+	blade = lwgeom_from_wkt("POLYGON EMPTY", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	if (!ret)
+		printf("%s", cu_error_msg);
+	CU_ASSERT_FATAL(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	CU_ASSERT_FATAL(wkt != NULL);
 	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,10 0))";
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
   /* Split line by multipolygon (boundary) */
-  geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT_FATAL(geom != NULL);
-  blade = lwgeom_from_wkt(
-"MULTIPOLYGON(((1 -1,1 1,2 1,2 -1,1 -1)),((3 -1,3 1,11 1,11 -1,3 -1)))",
-    LW_PARSER_CHECK_NONE);
-  ret = lwgeom_split(geom, blade);
-  if ( ! ret ) printf("%s", cu_error_msg);
-  CU_ASSERT_FATAL(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  CU_ASSERT_FATAL(wkt != NULL);
+	geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_FATAL(geom != NULL);
+	blade = lwgeom_from_wkt("MULTIPOLYGON(((1 -1,1 1,2 1,2 -1,1 -1)),((3 -1,3 1,11 1,11 -1,3 -1)))",
+				LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	if (!ret)
+		printf("%s", cu_error_msg);
+	CU_ASSERT_FATAL(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	CU_ASSERT_FATAL(wkt != NULL);
 	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))";
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
-  /* Split line by multipoint */
-  geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT_FATAL(geom != NULL);
-  blade = lwgeom_from_wkt("MULTIPOINT(2 0,8 0,4 0)", LW_PARSER_CHECK_NONE);
-  ret = lwgeom_split(geom, blade);
-  if ( ! ret ) printf("%s", cu_error_msg);
-  CU_ASSERT_FATAL(ret != NULL);
-  wkt = lwgeom_to_ewkt(ret);
-  CU_ASSERT_FATAL(wkt != NULL);
+	/* Split line by multipoint */
+	geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_FATAL(geom != NULL);
+	blade = lwgeom_from_wkt("MULTIPOINT(2 0,8 0,4 0)", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	if (!ret)
+		printf("%s", cu_error_msg);
+	CU_ASSERT_FATAL(ret != NULL);
+	wkt = lwgeom_to_ewkt(ret);
+	CU_ASSERT_FATAL(wkt != NULL);
 	in_wkt = "GEOMETRYCOLLECTION(LINESTRING(8 0,10 0),LINESTRING(0 0,2 0),LINESTRING(4 0,8 0),LINESTRING(2 0,4 0))";
-  if (strcmp(in_wkt, wkt))
-                fprintf(stderr, "\nExp:  %s\nObt:  %s\n", in_wkt, wkt);
-  CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
-  lwfree(wkt);
+	ASSERT_STRING_EQUAL(wkt, in_wkt);
+	lwfree(wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 	lwgeom_free(blade);
 
-  /* See #3401 -- robustness issue */
-  geom = lwgeom_from_wkt("LINESTRING(-180 0,0 0)", LW_PARSER_CHECK_NONE);
-  CU_ASSERT(geom != NULL);
-  blade = lwgeom_from_wkt("POINT(-20 0)", LW_PARSER_CHECK_NONE);
-  ret = lwgeom_split(geom, blade);
-  CU_ASSERT(ret != NULL);
+	/* See #3401 -- robustness issue */
+	geom = lwgeom_from_wkt("LINESTRING(-180 0,0 0)", LW_PARSER_CHECK_NONE);
+	CU_ASSERT(geom != NULL);
+	blade = lwgeom_from_wkt("POINT(-20 0)", LW_PARSER_CHECK_NONE);
+	ret = lwgeom_split(geom, blade);
+	CU_ASSERT(ret != NULL);
 	{
 		LWCOLLECTION *split = lwgeom_as_lwcollection(ret);
 		LWLINE *l1, *l2;
@@ -281,6 +261,12 @@ static void test_lwgeom_split(void)
 	lwgeom_free(blade);
 }
 
+static int
+clean_geos_split_suite(void)
+{
+	finishGEOS();
+	return 0;
+}
 
 /*
 ** Used by test harness to register the tests in this file.
@@ -288,7 +274,7 @@ static void test_lwgeom_split(void)
 void split_suite_setup(void);
 void split_suite_setup(void)
 {
-	CU_pSuite suite = CU_add_suite("split", NULL, NULL);
+	CU_pSuite suite = CU_add_suite("split", NULL, clean_geos_split_suite);
 	PG_ADD_TEST(suite, test_lwline_split_by_point_to);
 	PG_ADD_TEST(suite, test_lwgeom_split);
 }
diff --git a/liblwgeom/cunit/cu_wrapx.c b/liblwgeom/cunit/cu_wrapx.c
index 7ee6586..a5ca09a 100644
--- a/liblwgeom/cunit/cu_wrapx.c
+++ b/liblwgeom/cunit/cu_wrapx.c
@@ -15,10 +15,11 @@
 
 #include "liblwgeom.h"
 #include "liblwgeom_internal.h"
+#include "../lwgeom_geos.h"
 
 static void test_lwgeom_wrapx(void)
 {
-	LWGEOM *geom, *ret;
+	LWGEOM *geom, *ret, *tmp, *tmp2;
 	char *exp_wkt, *obt_wkt;
 
 	geom = lwgeom_from_wkt(
@@ -77,13 +78,21 @@ static void test_lwgeom_wrapx(void)
 		"LINESTRING(0 0,10 0)",
 		LW_PARSER_CHECK_NONE);
 	CU_ASSERT_FATAL(geom != NULL);
-	ret = lwgeom_normalize(lwgeom_wrapx(geom, 8, -10));
+	tmp = lwgeom_wrapx(geom, 8, -10);
+	ret = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
 	CU_ASSERT_FATAL(ret != NULL);
 	obt_wkt = lwgeom_to_ewkt(ret);
-	exp_wkt = lwgeom_to_ewkt(lwgeom_normalize(lwgeom_from_wkt("MULTILINESTRING((0 0,8 0),(-2 0,0 0))",
-							LW_PARSER_CHECK_NONE)));
+	tmp = lwgeom_from_wkt(
+					"MULTILINESTRING((0 0,8 0),(-2 0,0 0))",
+					LW_PARSER_CHECK_NONE);
+	tmp2 = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
+	exp_wkt = lwgeom_to_ewkt(tmp2);
+	lwgeom_free(tmp2);
 	ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
 	lwfree(obt_wkt);
+	lwfree(exp_wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 
@@ -91,12 +100,19 @@ static void test_lwgeom_wrapx(void)
 		"MULTILINESTRING((-5 -2,0 0),(0 0,10 10))",
 		LW_PARSER_CHECK_NONE);
 	CU_ASSERT_FATAL(geom != NULL);
-	ret = lwgeom_wrapx(geom, 0, 20);
+	tmp = lwgeom_wrapx(geom, 0, 20);
+	ret = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
 	CU_ASSERT_FATAL(ret != NULL);
 	obt_wkt = lwgeom_to_ewkt(ret);
-	exp_wkt = "MULTILINESTRING((15 -2,20 0),(0 0,10 10))";
+	tmp = lwgeom_from_wkt("MULTILINESTRING((15 -2,20 0),(0 0,10 10))", LW_PARSER_CHECK_NONE);
+	tmp2 = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
+	exp_wkt = lwgeom_to_ewkt(tmp2);
+	lwgeom_free(tmp2);
 	ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
 	lwfree(obt_wkt);
+	lwfree(exp_wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 
@@ -107,23 +123,29 @@ static void test_lwgeom_wrapx(void)
 		")",
 		LW_PARSER_CHECK_NONE);
 	CU_ASSERT_FATAL(geom != NULL);
-	ret = lwgeom_normalize(lwgeom_wrapx(geom, 2, 20));
+	tmp = lwgeom_wrapx(geom, 2, 20);
+	ret = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
 	CU_ASSERT_FATAL(ret != NULL);
 	obt_wkt = lwgeom_to_ewkt(ret);
-	exp_wkt = lwgeom_to_ewkt(lwgeom_normalize(lwgeom_from_wkt(
-	    "GEOMETRYCOLLECTION("
-	    "MULTIPOLYGON("
-	    "((22 0,20 0,20 10,22 10,22 4,22 2,22 0)),"
-	    "((2 10,10 10,10 0,2 0,2 2,4 2,4 4,2 4,2 10))"
-	    "),"
-	    "MULTIPOLYGON("
-	    "((22 11,20 11,20 21,22 21,22 15,22 13,22 11)),"
-	    "((2 21,10 21,10 11,2 11,2 13,4 13,4 15,2 15,2 21))"
-	    ")"
-	    ")",
-	    LW_PARSER_CHECK_NONE)));
+	tmp = lwgeom_from_wkt("GEOMETRYCOLLECTION("
+							    "MULTIPOLYGON("
+							    "((22 0,20 0,20 10,22 10,22 4,22 2,22 0)),"
+							    "((2 10,10 10,10 0,2 0,2 2,4 2,4 4,2 4,2 10))"
+							    "),"
+							    "MULTIPOLYGON("
+							    "((22 11,20 11,20 21,22 21,22 15,22 13,22 11)),"
+							    "((2 21,10 21,10 11,2 11,2 13,4 13,4 15,2 15,2 21))"
+							    ")"
+							    ")",
+							    LW_PARSER_CHECK_NONE);
+	tmp2 = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
+	exp_wkt = lwgeom_to_ewkt(tmp2);
+	lwgeom_free(tmp2);
 	ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
 	lwfree(obt_wkt);
+	lwfree(exp_wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 
@@ -135,20 +157,35 @@ static void test_lwgeom_wrapx(void)
 		")",
 		LW_PARSER_CHECK_NONE);
 	CU_ASSERT_FATAL(geom != NULL);
-	ret = lwgeom_wrapx(geom, 0, 20);
+	tmp = lwgeom_wrapx(geom, 0, 20);
+	ret = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
 	CU_ASSERT_FATAL(ret != NULL);
 	obt_wkt = lwgeom_to_ewkt(ret);
-	exp_wkt = "GEOMETRYCOLLECTION("
-						"MULTILINESTRING((15 -2,20 0),(0 0,10 10)),"
-						"POINT(15 0),"
-						"POLYGON EMPTY"
-						")";
+	tmp = lwgeom_from_wkt(
+	    "GEOMETRYCOLLECTION("
+	    "MULTILINESTRING((15 -2,20 0),(0 0,10 10)),"
+	    "POINT(15 0),"
+	    "POLYGON EMPTY"
+	    ")",
+	    LW_PARSER_CHECK_NONE);
+	tmp2 = lwgeom_normalize(tmp);
+	lwgeom_free(tmp);
+	exp_wkt = lwgeom_to_ewkt(tmp2);
+	lwgeom_free(tmp2);
 	ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
 	lwfree(obt_wkt);
+	lwfree(exp_wkt);
 	lwgeom_free(ret);
 	lwgeom_free(geom);
 }
 
+static int
+clean_geos_wrapx_suite(void)
+{
+	finishGEOS();
+	return 0;
+}
 
 /*
 ** Used by test harness to register the tests in this file.
@@ -156,6 +193,6 @@ static void test_lwgeom_wrapx(void)
 void wrapx_suite_setup(void);
 void wrapx_suite_setup(void)
 {
-	CU_pSuite suite = CU_add_suite("wrapx", NULL, NULL);
+	CU_pSuite suite = CU_add_suite("wrapx", NULL, clean_geos_wrapx_suite);
 	PG_ADD_TEST(suite, test_lwgeom_wrapx);
 }

-----------------------------------------------------------------------

Summary of changes:
 liblwgeom/cunit/cu_split.c | 238 +++++++++++++++++++++------------------------
 liblwgeom/cunit/cu_wrapx.c |  89 ++++++++++++-----
 2 files changed, 175 insertions(+), 152 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list