X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Freclists.c;h=8ef9ba4cc34e4337300f433bca02f8399594acdb;hb=d08893d173565ccde81b9f7cbf487a67cee5532a;hp=0a9bd8c2261d1ed22419a4321f9f3043640cea50;hpb=8cc486015ba87bc3daf483d18d31d163c3670a21;p=pazpar2-moved-to-github.git diff --git a/src/reclists.c b/src/reclists.c index 0a9bd8c..8ef9ba4 100644 --- a/src/reclists.c +++ b/src/reclists.c @@ -366,21 +366,20 @@ struct record_cluster *reclist_insert(struct reclist *l, // We found a matching record. Merge them if (!strcmp(merge_key, (*p)->record->merge_key)) { - struct record_cluster *existing = (*p)->record; - struct record *re = existing->records; + struct record **re; - for (; re; re = re->next) + cluster = (*p)->record; + for (re = &cluster->records; *re; re = &(*re)->next) { - if (re->client == record->client && - record_compare(record, re, service)) + if ((*re)->client == record->client && + record_compare(record, *re, service)) { yaz_mutex_leave(l->mutex); return 0; } } - record->next = existing->records; - existing->records = record; - cluster = existing; + *re = record; + record->next = 0; break; } }