diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2013-08-27 06:25:00 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2013-08-27 06:25:00 +0000 |
commit | eaf09920226488090a7abcfee21578b2cb03fa46 (patch) | |
tree | d33e9a105f8b9cb7b68cebfbf08b9e69854c3caa /navit | |
parent | baa8c9c7e5f843ea5486f9bce1f4cc804fa7c7c2 (diff) | |
download | navit-eaf09920226488090a7abcfee21578b2cb03fa46.tar.gz |
Fix:Core:Result items are not unique in interpolated search
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5611 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit')
-rw-r--r-- | navit/search.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/navit/search.c b/navit/search.c index 5529973da..d5a04e9c0 100644 --- a/navit/search.c +++ b/navit/search.c @@ -813,6 +813,7 @@ search_list_house_number_new(struct item *item, struct interpolation *inter, cha if (item_attr_get(item, attr_house_number, &attr)) ret->house_number=map_convert_string(item->map, attr.u.str); else { + memset(&ret->common.unique, 0, sizeof(ret->common.unique)); //if (item_attr_get(item, attr_street_name, &attr)) // dbg(0,"xx2 %s\n",attr.u.str); for (;;) { @@ -999,9 +1000,16 @@ search_add_result(struct search_list_level *le, struct search_list_common *slc) { struct search_list_common *slo; char *merged; - slo=g_hash_table_lookup(le->hash, &slc->unique); + int unique=0; + if (slc->unique.type || slc->unique.id_hi || slc->unique.id_lo) + unique=1; + if (unique) + slo=g_hash_table_lookup(le->hash, &slc->unique); + else + slo=NULL; if (!slo) { - g_hash_table_insert(le->hash, &slc->unique, slc); + if (unique) + g_hash_table_insert(le->hash, &slc->unique, slc); if (slc->postal && !slc->postal_mask) { slc->postal_mask=g_strdup(slc->postal); } |