Re: [PATCH 5/6] Do linear-time/space rename logic for exact renames
- From
Daniel Barkalow <barkalow@iabervon.org>
- Date
- Oct 25, 2007, 19:43 UTC
- Message-ID
- <Pine.LNX.4.64.0710251522190.7345@iabervon.org>
- In-Reply-To
- <alpine.LFD.0.999.0710251120590.30120@woody.linux-foundation.org>
Show 8 quoted lines
> +/* > + * Insert a new hash entry pointer into the table. > + * > + * If that hash entry already existed, return the pointer to > + * the existing entry (and the caller can create a list of the > + * pointers or do anything else). If it didn't exist, return > + * NULL (and the caller knows the pointer has been inserted). > + */
Creating a list of the pointers doesn't work correctly with the grow implementation, because growing the hash may turn a collision into a non-collision, at which point items other than the first cannot be found (since they're listed inside a bucket that's now wrong for them). AFAIK, resizing a hash table requires being able to figure out what happened with collisions.
-Daniel *This .sig left intentionally blank*