Browse Source

hashtable-based objects: minimum fixups.

Calling hashtable_index from find_object before objs is created
would result in division by zero failure.  Avoid it.

Also the given object name may not be aligned suitably for
unsigned int; avoid dereferencing casted pointer.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 19 years ago
parent
commit
2b796360ac
  1. 6
      object.c

6
object.c

@ -13,17 +13,19 @@ int track_object_refs = 1; @@ -13,17 +13,19 @@ int track_object_refs = 1;

static int hashtable_index(const unsigned char *sha1)
{
unsigned int i = *(unsigned int *)sha1;
unsigned int i;
memcpy(&i, sha1, sizeof(unsigned int));
return (int)(i % obj_allocs);
}

static int find_object(const unsigned char *sha1)
{
int i = hashtable_index(sha1);
int i;

if (!objs)
return -1;

i = hashtable_index(sha1);
while (objs[i]) {
if (memcmp(sha1, objs[i]->sha1, 20) == 0)
return i;

Loading…
Cancel
Save