summaryrefslogtreecommitdiff
path: root/navit/search.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-08-27 06:25:00 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-08-27 06:25:00 +0000
commiteaf09920226488090a7abcfee21578b2cb03fa46 (patch)
treed33e9a105f8b9cb7b68cebfbf08b9e69854c3caa /navit/search.c
parentbaa8c9c7e5f843ea5486f9bce1f4cc804fa7c7c2 (diff)
downloadnavit-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/search.c')
-rw-r--r--navit/search.c12
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);
}