mirror of
https://github.com/mirror/wget.git
synced 2025-01-06 02:10:28 +08:00
[svn] Mark entries as deleted with the correct marker.
This commit is contained in:
parent
bf1ce5b2ad
commit
fef88bd179
@ -4,6 +4,8 @@
|
||||
(grow_hash_table): Extract ht->hash_function outside the loop.
|
||||
(hash_table_remove): Ditto.
|
||||
(hash_table_clear): Fill entries with 0xff to clear them.
|
||||
(hash_table_remove): Mark entries as deleted with the correct
|
||||
marker.
|
||||
|
||||
2003-11-08 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
|
@ -161,7 +161,9 @@ struct hash_table {
|
||||
/* We use all-bit-set marker to mean that a mapping is empty. It is
|
||||
(hopefully) illegal as a pointer, and it allows the users to use
|
||||
NULL (as well as any non-negative integer) as key. */
|
||||
|
||||
#define NON_EMPTY(mp) (mp->key != (void *)~(unsigned long)0)
|
||||
#define MARK_AS_EMPTY(mp) (mp->key = (void *)~(unsigned long)0)
|
||||
|
||||
/* "Next" mapping is the mapping after MP, but wrapping back to
|
||||
MAPPINGS when MP would reach MAPPINGS+SIZE. */
|
||||
@ -438,7 +440,7 @@ hash_table_remove (struct hash_table *ht, const void *key)
|
||||
struct mapping *mappings = ht->mappings;
|
||||
hashfun_t hasher = ht->hash_function;
|
||||
|
||||
mp->key = NULL;
|
||||
MARK_AS_EMPTY (mp);
|
||||
--ht->count;
|
||||
|
||||
/* Rehash all the entries following MP. The alternative
|
||||
@ -461,7 +463,7 @@ hash_table_remove (struct hash_table *ht, const void *key)
|
||||
goto next_rehash;
|
||||
|
||||
*mp_new = *mp;
|
||||
mp->key = NULL;
|
||||
MARK_AS_EMPTY (mp);
|
||||
|
||||
next_rehash:
|
||||
;
|
||||
|
Loading…
Reference in New Issue
Block a user