mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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:
1 parent
22f3c41dd7
commit
473ae5b7f3
2 files changed
+5
-7
No files matched your search
@@ -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;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||