Changeset: b6ef1c3c91a8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b6ef1c3c91a8
Modified Files:
        geom/monetdb5/geom.c
Branch: sfcgal
Log Message:

Make sure you build the WKB in ST_Dwithin


diffs (40 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -5884,7 +5884,7 @@ wkbDWithinXYZ(bit *out, wkb **geomWKB_a,
 {
        double distanceComputed;
        str err;
-    wkb **geomWKB_b = NULL;
+    wkb *geomWKB_b = NULL;
 
        GEOSGeom geosGeometry_b;
        GEOSCoordSeq seq;
@@ -5921,15 +5921,21 @@ wkbDWithinXYZ(bit *out, wkb **geomWKB_a,
 
     if (*srid != int_nil)
        GEOSSetSRID(geosGeometry_b, *srid);
-
-       if (wkb_isnil(*geomWKB_a) || wkb_isnil(*geomWKB_b) || *distance == 
dbl_nil) {
-               *out = bit_nil;
-               return MAL_SUCCEED;
-       }
-       if ((err = wkbDistance(&distanceComputed, geomWKB_a, geomWKB_b)) != 
MAL_SUCCEED) {
+    
+    if ((geomWKB_b = geos2wkb(geosGeometry_b)) == NULL) {
+        GEOSGeom_destroy(geosGeometry_b);
+               throw(MAL, "wkbDWithinXYZ", "geos2wkb failed");
+    }
+
+       if (wkb_isnil(*geomWKB_a) || wkb_isnil(geomWKB_b) || *distance == 
dbl_nil) {
+        GEOSGeom_destroy(geosGeometry_b);
+               throw(MAL, "wkbDWithinXYZ", "one of the arguments is NULL");
+       }
+       if ((err = wkbDistance(&distanceComputed, geomWKB_a, &geomWKB_b)) != 
MAL_SUCCEED) {
                return err;
        }
 
+    GEOSGeom_destroy(geosGeometry_b);
        *out = (distanceComputed <= *distance);
 
        return MAL_SUCCEED;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to