http-push: use hex_to_bytes()
The path of a loose object contains its hash value encoded into two substrings of hexadecimal digits, separated by a slash. The current code copies the pieces into a temporary buffer to get rid of the slash and then uses get_oid_hex() to decode the hash value. Avoid the copy by using hex_to_bytes() directly on the substrings. That's shorter and easier. While at it correct the length of the second substring in a comment. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
0ec218656a
commit
c3bdc4e779
10
http-push.c
10
http-push.c
@ -1007,20 +1007,18 @@ static void remote_ls(const char *path, int flags,
|
|||||||
void (*userFunc)(struct remote_ls_ctx *ls),
|
void (*userFunc)(struct remote_ls_ctx *ls),
|
||||||
void *userData);
|
void *userData);
|
||||||
|
|
||||||
/* extract hex from sharded "xx/x{40}" filename */
|
/* extract hex from sharded "xx/x{38}" filename */
|
||||||
static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
|
static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
|
||||||
{
|
{
|
||||||
char hex[GIT_MAX_HEXSZ];
|
|
||||||
|
|
||||||
if (strlen(path) != GIT_SHA1_HEXSZ + 1)
|
if (strlen(path) != GIT_SHA1_HEXSZ + 1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
memcpy(hex, path, 2);
|
if (hex_to_bytes(oid->hash, path, 1))
|
||||||
|
return -1;
|
||||||
path += 2;
|
path += 2;
|
||||||
path++; /* skip '/' */
|
path++; /* skip '/' */
|
||||||
memcpy(hex + 2, path, GIT_SHA1_HEXSZ - 2);
|
|
||||||
|
|
||||||
return get_oid_hex(hex, oid);
|
return hex_to_bytes(oid->hash + 1, path, GIT_SHA1_RAWSZ - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_ls_object(struct remote_ls_ctx *ls)
|
static void process_ls_object(struct remote_ls_ctx *ls)
|
||||||
|
Reference in New Issue
Block a user