summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-05-17 18:45:50 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-05-17 18:45:50 +0000
commita0962b1ed00afdb1cf75ee2c6cefa57d23250329 (patch)
tree66750dfaec2d97bbe62d59315c3606d68e895d49
parent0eb3f41da77b0673f42e508f6da5e88e91b3e5a2 (diff)
downloadnavit-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.c13
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;