tools/xenstore: don't let hashtable_remove() return the removed value

Letting hashtable_remove() return the value of the removed element is
not used anywhere in Xenstore, and it conflicts with a hashtable
created specifying the HASHTABLE_FREE_VALUE flag.

So just drop returning the value.

This of course requires to free the value if the HASHTABLE_FREE_VALUE
was specified, as otherwise it would be a memory leak.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
Juergen Gross authored and Julien Grall committed 2023-01-20 09:23:51 +00:00
1 parent 22f3c41dd7
commit 473ae5b7f3
2 files changed
+5 -7

No files matched your search

+4 -5
View File
@@ -214,7 +214,7 @@ hashtable_search(struct hashtable *h, void *k)
}
/*****************************************************************************/
void * /* returns value associated with key */
void
hashtable_remove(struct hashtable *h, void *k)
{
/* TODO: consider compacting the table when the load factor drops enough,
@@ -222,7 +222,6 @@ hashtable_remove(struct hashtable *h, void *k)
struct entry *e;
struct entry **pE;
void *v;
unsigned int hashvalue, index;
hashvalue = hash(h,k);
@@ -236,16 +235,16 @@ hashtable_remove(struct hashtable *h, void *k)
{
*pE = e->next;
h->entrycount--;
v = e->v;
if (h->flags & HASHTABLE_FREE_KEY)
free(e->k);
if (h->flags & HASHTABLE_FREE_VALUE)
free(e->v);
free(e);
return v;
return;
}
pE = &(e->next);
e = e->next;
}
return NULL;
}
/*****************************************************************************/
+1 -2
View File
@@ -68,10 +68,9 @@ hashtable_search(struct hashtable *h, void *k);
* @name hashtable_remove
* @param h the hashtable to remove the item from
* @param k the key to search for - does not claim ownership
* @return the value associated with the key, or NULL if none found
*/
void * /* returns value */
void
hashtable_remove(struct hashtable *h, void *k);
/*****************************************************************************
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.