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>
This commit is contained in:
Junio C Hamano 2006-02-11 18:51:19 -08:00
Родитель 070879ca93
Коммит 2b796360ac
1 изменённых файлов: 4 добавлений и 2 удалений

Просмотреть файл

@ -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;