diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-05-17 18:45:50 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-05-17 18:45:50 +0000 |
commit | a0962b1ed00afdb1cf75ee2c6cefa57d23250329 (patch) | |
tree | 66750dfaec2d97bbe62d59315c3606d68e895d49 | |
parent | 0eb3f41da77b0673f42e508f6da5e88e91b3e5a2 (diff) | |
download | navit-svn-a0962b1ed00afdb1cf75ee2c6cefa57d23250329.tar.gz |
Fix:Tools:Match only if all attributes are present
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit/src@1053 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r-- | osm2navit.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/osm2navit.c b/osm2navit.c index 273481b1..1448c792 100644 --- a/osm2navit.c +++ b/osm2navit.c @@ -887,13 +887,20 @@ write_attr(FILE *out, struct attr_bin *attr, void *buffer) static int attr_longest_match(struct attr_mapping **mapping, int mapping_count, enum item_type *types, int types_count) { - int i,j,longest=0,ret=0,sum; + int i,j,longest=0,ret=0,sum,val; struct attr_mapping *curr; for (i = 0 ; i < mapping_count ; i++) { sum=0; curr=mapping[i]; - for (j = 0 ; j < curr->attr_present_idx_count ; j++) - sum+=attr_present[curr->attr_present_idx[j]]; + for (j = 0 ; j < curr->attr_present_idx_count ; j++) { + val=attr_present[curr->attr_present_idx[j]]; + if (val) + sum+=val; + else { + sum=-1; + break; + } + } if (sum > longest) { longest=sum; ret=0; |