mirror of
https://github.com/mirror/wget.git
synced 2025-01-07 19:00:30 +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.
|
(grow_hash_table): Extract ht->hash_function outside the loop.
|
||||||
(hash_table_remove): Ditto.
|
(hash_table_remove): Ditto.
|
||||||
(hash_table_clear): Fill entries with 0xff to clear them.
|
(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>
|
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
|
/* 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
|
(hopefully) illegal as a pointer, and it allows the users to use
|
||||||
NULL (as well as any non-negative integer) as key. */
|
NULL (as well as any non-negative integer) as key. */
|
||||||
|
|
||||||
#define NON_EMPTY(mp) (mp->key != (void *)~(unsigned long)0)
|
#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
|
/* "Next" mapping is the mapping after MP, but wrapping back to
|
||||||
MAPPINGS when MP would reach MAPPINGS+SIZE. */
|
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;
|
struct mapping *mappings = ht->mappings;
|
||||||
hashfun_t hasher = ht->hash_function;
|
hashfun_t hasher = ht->hash_function;
|
||||||
|
|
||||||
mp->key = NULL;
|
MARK_AS_EMPTY (mp);
|
||||||
--ht->count;
|
--ht->count;
|
||||||
|
|
||||||
/* Rehash all the entries following MP. The alternative
|
/* 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;
|
goto next_rehash;
|
||||||
|
|
||||||
*mp_new = *mp;
|
*mp_new = *mp;
|
||||||
mp->key = NULL;
|
MARK_AS_EMPTY (mp);
|
||||||
|
|
||||||
next_rehash:
|
next_rehash:
|
||||||
;
|
;
|
||||||
|
Loading…
Reference in New Issue
Block a user