Skip to content

Commit

Permalink
sha1_file.c: cleanup hdr usage
Browse files Browse the repository at this point in the history
Let's have hdr be a simple char pointer/array when possible, and let's
reduce its storage to 32 bytes.  Especially for sha1_loose_object_info()
where 128 bytes is way excessive and wastes extra CPU cycles inflating.

The object type is already restricted to 10 bytes in parse_sha1_header()
and the size, even if it is 64 bits, will fit in 20 decimal numbers.  So
32 bytes is plenty.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Nicolas Pitre authored and Junio C Hamano committed Feb 27, 2007
1 parent 4e4b55d commit d65a16f
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions sha1_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1461,7 +1461,7 @@ static int sha1_loose_object_info(const unsigned char *sha1, char *type, unsigne
unsigned long mapsize, size;
void *map;
z_stream stream;
char hdr[128];
char hdr[32];

map = map_sha1_file(sha1, &mapsize);
if (!map)
Expand Down Expand Up @@ -1628,12 +1628,12 @@ void *read_object_with_reference(const unsigned char *sha1,

static void write_sha1_file_prepare(void *buf, unsigned long len,
const char *type, unsigned char *sha1,
unsigned char *hdr, int *hdrlen)
char *hdr, int *hdrlen)
{
SHA_CTX c;

/* Generate the header */
*hdrlen = sprintf((char *)hdr, "%s %lu", type, len)+1;
*hdrlen = sprintf(hdr, "%s %lu", type, len)+1;

/* Sha1.. */
SHA1_Init(&c);
Expand Down Expand Up @@ -1740,7 +1740,7 @@ static int write_binary_header(unsigned char *hdr, enum object_type type, unsign

static void setup_object_header(z_stream *stream, const char *type, unsigned long len)
{
int obj_type, hdr;
int obj_type, hdrlen;

if (use_legacy_headers) {
while (deflate(stream, 0) == Z_OK)
Expand All @@ -1757,16 +1757,16 @@ static void setup_object_header(z_stream *stream, const char *type, unsigned lon
obj_type = OBJ_TAG;
else
die("trying to generate bogus object of type '%s'", type);
hdr = write_binary_header(stream->next_out, obj_type, len);
stream->total_out = hdr;
stream->next_out += hdr;
stream->avail_out -= hdr;
hdrlen = write_binary_header(stream->next_out, obj_type, len);
stream->total_out = hdrlen;
stream->next_out += hdrlen;
stream->avail_out -= hdrlen;
}

int hash_sha1_file(void *buf, unsigned long len, const char *type,
unsigned char *sha1)
{
unsigned char hdr[50];
char hdr[32];
int hdrlen;
write_sha1_file_prepare(buf, len, type, sha1, hdr, &hdrlen);
return 0;
Expand All @@ -1780,7 +1780,7 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha
unsigned char sha1[20];
char *filename;
static char tmpfile[PATH_MAX];
unsigned char hdr[50];
char hdr[32];
int fd, hdrlen;

/* Normally if we have it in the pack then we do not bother writing
Expand Down Expand Up @@ -1827,7 +1827,7 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha
stream.avail_out = size;

/* First header.. */
stream.next_in = hdr;
stream.next_in = (unsigned char *)hdr;
stream.avail_in = hdrlen;
setup_object_header(&stream, type, len);

Expand Down Expand Up @@ -1859,7 +1859,7 @@ static void *repack_object(const unsigned char *sha1, unsigned long *objsize)
unsigned char *unpacked;
unsigned long len;
char type[20];
char hdr[50];
char hdr[32];
int hdrlen;
void *buf;

Expand Down

0 comments on commit d65a16f

Please sign in to comment.