X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=osm.c;h=a9c499e69152183d7d2545162a770f9f15535d59;hb=eadd63b657be979276b0f7bab89f76a632473ab4;hp=325b592322287858a064f46faa10bd538b5fac96;hpb=b5ad4205a047a4be68e74c82f5637b13bd3f6896;p=leo.git diff --git a/osm.c b/osm.c index 325b592..a9c499e 100644 --- a/osm.c +++ b/osm.c @@ -74,6 +74,7 @@ static void *osm_obj_new(enum osm_object_type type, osm_id_t id, uns size) struct osm_object *o = mp_alloc_zero(osm_this->pool, size); clist_add_tail(&osm_this->obj_list[type], &o->n); + osm_this->obj_cnt[type]++; o->type = type; o->id = id; clist_init(&o->tags); @@ -381,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)); @@ -411,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)); @@ -585,3 +588,11 @@ void osm_dump(void) osm_relation_dump_all(); osm_multipolygon_dump_all(); } + +void osm_stats(void) +{ + msg(L_INFO, "Loaded %u nodes, %u ways, %u relations", + osm_this->obj_cnt[OSM_TYPE_NODE], + osm_this->obj_cnt[OSM_TYPE_WAY], + osm_this->obj_cnt[OSM_TYPE_RELATION]); +}