- {
- logf (LOG_DEBUG, "updating result set %s", name);
- if (!ov)
- return NULL;
- rset_delete (s->rset);
- s->rset = rset;
- resultSetRank (zh, s->sort_info, rset, hits);
- return s;
- }
- logf (LOG_DEBUG, "adding result set %s", name);
- s = xmalloc (sizeof(*s));
- s->next = zh->sets;
- zh->sets = s;
- s->name = xmalloc (strlen(name)+1);
- strcpy (s->name, name);
- s->rset = rset;
-
- s->sort_info = xmalloc (sizeof(*s->sort_info));
- s->sort_info->max_entries = 1000;
- s->sort_info->entries = xmalloc (sizeof(*s->sort_info->entries) *
- s->sort_info->max_entries);
- s->sort_info->all_entries = xmalloc (sizeof(*s->sort_info->all_entries) *
- s->sort_info->max_entries);
- for (i = 0; i < s->sort_info->max_entries; i++)
- s->sort_info->entries[i] = s->sort_info->all_entries + i;
- resultSetRank (zh, s->sort_info, rset, hits);
+ break;
+ if (s)
+ {
+ logf (LOG_DEBUG, "updating result set %s", name);
+ if (!ov)
+ return NULL;
+ if (s->rset)
+ rset_delete (s->rset);
+ if (s->nmem)
+ nmem_destroy (s->nmem);
+ }
+ else
+ {
+ logf (LOG_DEBUG, "adding result set %s", name);
+ s = (ZebraSet) xmalloc (sizeof(*s));
+ s->next = zh->sets;
+ zh->sets = s;
+ s->name = (char *) xmalloc (strlen(name)+1);
+ strcpy (s->name, name);
+
+ s->sort_info = (struct zset_sort_info *)
+ xmalloc (sizeof(*s->sort_info));
+ s->sort_info->max_entries = 1000;
+ s->sort_info->entries = (struct zset_sort_entry **)
+ xmalloc (sizeof(*s->sort_info->entries) *
+ s->sort_info->max_entries);
+ s->sort_info->all_entries = (struct zset_sort_entry *)
+ xmalloc (sizeof(*s->sort_info->all_entries) *
+ s->sort_info->max_entries);
+ for (i = 0; i < s->sort_info->max_entries; i++)
+ s->sort_info->entries[i] = s->sort_info->all_entries + i;
+ }
+ s->rset = 0;
+ s->nmem = 0;