]> mj.ucw.cz Git - leo.git/commitdiff
Do not crash on broken multipolygons
authorMartin Mares <mj@ucw.cz>
Wed, 1 Apr 2015 14:11:51 +0000 (16:11 +0200)
committerMartin Mares <mj@ucw.cz>
Wed, 1 Apr 2015 14:11:51 +0000 (16:11 +0200)
osm.c

diff --git a/osm.c b/osm.c
index 862f7fbb52012cdcf76221a15879cdc60beace04..a9c499e69152183d7d2545162a770f9f15535d59 100644 (file)
--- a/osm.c
+++ b/osm.c
@@ -382,7 +382,7 @@ static void mpg_walk_boundary(struct osm_multipolygon *m, bool inner)
          clist_init(&b->nodes);
 
          struct mpg_vertex *w = v;
-         while (!w->visited)
+         while (w && !w->visited)
            {
              w->visited = 1;
              struct osm_ref *f = mp_alloc(osm_this->pool, sizeof(*f));
@@ -412,7 +412,9 @@ static void mpg_walk_boundary(struct osm_multipolygon *m, bool inner)
              w = dest;
            }
 
-         if (w != v)
+         if (!w)
+           osm_obj_warn(&mpg_current->o, "Boundary not closed");
+         else if (w != v)
            osm_obj_warn(&mpg_current->o, "Boundary not closed at node %ju", (uintmax_t) w->o->id);
 
          struct osm_ref *f = mp_alloc(osm_this->pool, sizeof(*f));