mirror of
https://github.com/coreutils/coreutils.git
synced 2024-12-03 06:53:31 +08:00
Use XOR, not OR to combine bits.
* gl/lib/hash-triple.c (triple_hash): Use XOR (^), not OR (|), to combine the bits from hashing the name and those of the inode number. Add a few comments and remove out-of-context ones.
This commit is contained in:
parent
e2a6cbca3b
commit
0359c2e1ca
@ -1,3 +1,10 @@
|
||||
2007-09-25 Jim Meyering <jim@meyering.net>
|
||||
|
||||
Use XOR, not OR to combine bits.
|
||||
* gl/lib/hash-triple.c (triple_hash): Use XOR (^), not OR (|), to
|
||||
combine the bits from hashing the name and those of the inode number.
|
||||
Add a few comments and remove out-of-context ones.
|
||||
|
||||
2007-09-24 Jim Meyering <jim@meyering.net>
|
||||
|
||||
* NEWS: The recent rm-diagnostic fix also affects cross-partition "mv".
|
||||
|
@ -8,27 +8,18 @@
|
||||
#include "same.h"
|
||||
#include "same-inode.h"
|
||||
|
||||
/* Hash an F_triple. */
|
||||
/* Hash an F_triple, and *do* consider the file name. */
|
||||
size_t
|
||||
triple_hash (void const *x, size_t table_size)
|
||||
{
|
||||
struct F_triple const *p = x;
|
||||
|
||||
/* Also take the name into account, so that when moving N hard links to the
|
||||
same file (all listed on the command line) all into the same directory,
|
||||
we don't experience any N^2 behavior. */
|
||||
/* FIXME-maybe: is it worth the overhead of doing this
|
||||
just to avoid N^2 in such an unusual case? N would have
|
||||
to be very large to make the N^2 factor noticable, and
|
||||
one would probably encounter a limit on the length of
|
||||
a command line before it became a problem. */
|
||||
size_t tmp = hash_pjw (p->name, table_size);
|
||||
|
||||
/* Ignoring the device number here should be fine. */
|
||||
return (tmp | p->st_ino) % table_size;
|
||||
return (tmp ^ p->st_ino) % table_size;
|
||||
}
|
||||
|
||||
/* Hash an F_triple. */
|
||||
/* Hash an F_triple, without considering the file name. */
|
||||
size_t
|
||||
triple_hash_no_name (void const *x, size_t table_size)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user