{"thread":{"id":"4562","subject":"[PATCH 7/7] Remove all void-pointer arithmetic.","startedAt":"2006-06-18T15:18:08Z","lastAt":"2006-06-18T15:18:09Z","messageCount":2,"participants":["Florian Forster"],"isPatch":true,"patchVersion":1,"patchTotal":7},"messages":[{"id":"22028","messageId":"1150643889961-git-send-email-octo@verplant.org","threadId":"4562","inReplyTo":"11506438893544-git-send-email-octo@verplant.org","subject":"[PATCH 6/7] Change types used in bitfields to be `int's.","fromName":"Florian Forster","fromEmail":"octo@verplant.org","sentAt":"2006-06-18T15:18:08Z","receivedAt":"2006-06-18T15:18:08Z","isPatch":true,"sender":{"key":"octo@verplant.org","avatar":null},"body":"According to ANSI C99 bitfields are only defined for `signed int' and `unsigned\nint'. This patch corrects the bitfield in the `msg_data_t' type from\n`imap-send.c'.\n\nSigned-off-by: Florian Forster <octo@verplant.org>\n\n\n---\n\n imap-send.c |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\n471838c5e32b83bc8b84584343daeb1174d0e968\ndiff --git a/imap-send.c b/imap-send.c\nindex 285ad29..94e39cd 100644\n--- a/imap-send.c\n+++ b/imap-send.c\n@@ -93,7 +93,7 @@ typedef struct {\n \tchar *data;\n \tint len;\n \tunsigned char flags;\n-\tunsigned char crlf:1;\n+\tunsigned int crlf:1;\n } msg_data_t;\n \n #define DRV_OK          0\n-- \n1.3.3\n"},{"id":"22027","messageId":"11506438893319-git-send-email-octo@verplant.org","threadId":"4562","inReplyTo":"1150643889961-git-send-email-octo@verplant.org","subject":"[PATCH 7/7] Remove all void-pointer arithmetic.","fromName":"Florian Forster","fromEmail":"octo@verplant.org","sentAt":"2006-06-18T15:18:09Z","receivedAt":"2006-06-18T15:18:09Z","isPatch":true,"sender":{"key":"octo@verplant.org","avatar":null},"body":"ANSI C99 doesn't allow void-pointer arithmetic. This patch fixes this in\nvarious ways. Usually the strategy that required the least changes was used.\n\nSigned-off-by: Florian Forster <octo@verplant.org>\n\n\n---\n\n builtin-apply.c    |    6 +++---\n builtin-tar-tree.c |    6 +++---\n convert-objects.c  |   22 +++++++++++-----------\n csum-file.c        |    4 ++--\n diff-delta.c       |    2 +-\n diff.c             |    2 +-\n diffcore-order.c   |    2 +-\n http-fetch.c       |    2 +-\n http-push.c        |    2 +-\n http.c             |    4 ++--\n pack-check.c       |    6 +++---\n pack-objects.c     |    4 ++--\n pack-redundant.c   |   16 ++++++++--------\n patch-delta.c      |    4 ++--\n pkt-line.c         |    4 ++--\n read-cache.c       |   13 +++++++------\n sha1_file.c        |   27 ++++++++++++++-------------\n ssh-fetch.c        |    2 +-\n tag.c              |    4 ++--\n tree-walk.c        |   11 ++++++-----\n 20 files changed, 73 insertions(+), 70 deletions(-)\n\n13941d158a5f53456cc095b1a4893c177c7224c0\ndiff --git a/builtin-apply.c b/builtin-apply.c\nindex e113c74..6dd0472 100644\n--- a/builtin-apply.c\n+++ b/builtin-apply.c\n@@ -148,7 +148,7 @@ static void *read_patch_file(int fd, uns\n \t\t\tbuffer = xrealloc(buffer, alloc);\n \t\t\tnr = alloc - size;\n \t\t}\n-\t\tnr = xread(fd, buffer + size, nr);\n+\t\tnr = xread(fd, (char *) buffer + size, nr);\n \t\tif (!nr)\n \t\t\tbreak;\n \t\tif (nr < 0)\n@@ -164,7 +164,7 @@ static void *read_patch_file(int fd, uns\n \t */\n \tif (alloc < size + SLOP)\n \t\tbuffer = xrealloc(buffer, size + SLOP);\n-\tmemset(buffer + size, 0, SLOP);\n+\tmemset((char *) buffer + size, 0, SLOP);\n \treturn buffer;\n }\n \n@@ -1194,7 +1194,7 @@ static int read_old_data(struct stat *st\n \t\t\treturn error(\"unable to open %s\", path);\n \t\tgot = 0;\n \t\tfor (;;) {\n-\t\t\tint ret = xread(fd, buf + got, size - got);\n+\t\t\tint ret = xread(fd, (char *) buf + got, size - got);\n \t\t\tif (ret <= 0)\n \t\t\t\tbreak;\n \t\t\tgot += ret;\ndiff --git a/builtin-tar-tree.c b/builtin-tar-tree.c\nindex f6310b9..c8527a3 100644\n--- a/builtin-tar-tree.c\n+++ b/builtin-tar-tree.c\n@@ -34,7 +34,7 @@ static void reliable_write(void *buf, un\n \t\t\tdie(\"git-tar-tree: disk full?\");\n \t\t}\n \t\tsize -= ret;\n-\t\tbuf += ret;\n+\t\tbuf = (char *) buf + ret;\n \t}\n }\n \n@@ -87,13 +87,13 @@ static void write_blocked(void *buf, uns\n \t\tmemcpy(block + offset, buf, chunk);\n \t\tsize -= chunk;\n \t\toffset += chunk;\n-\t\tbuf += chunk;\n+\t\tbuf = (char *) buf + chunk;\n \t\twrite_if_needed();\n \t}\n \twhile (size >= BLOCKSIZE) {\n \t\treliable_write(buf, BLOCKSIZE);\n \t\tsize -= BLOCKSIZE;\n-\t\tbuf += BLOCKSIZE;\n+\t\tbuf = (char *) buf + BLOCKSIZE;\n \t}\n \tif (size) {\n \t\tmemcpy(block + offset, buf, size);\ndiff --git a/convert-objects.c b/convert-objects.c\nindex a67d6b4..0fabd89 100644\n--- a/convert-objects.c\n+++ b/convert-objects.c\n@@ -103,12 +103,12 @@ static int write_subdirectory(void *buff\n \t\tif (!slash) {\n \t\t\tnewlen += sprintf(new + newlen, \"%o %s\", mode, path);\n \t\t\tnew[newlen++] = '\\0';\n-\t\t\tmemcpy(new + newlen, buffer + len - 20, 20);\n+\t\t\tmemcpy(new + newlen, (char *) buffer + len - 20, 20);\n \t\t\tnewlen += 20;\n \n \t\t\tused += len;\n \t\t\tsize -= len;\n-\t\t\tbuffer += len;\n+\t\t\tbuffer = (char *) buffer + len;\n \t\t\tcontinue;\n \t\t}\n \n@@ -121,7 +121,7 @@ static int write_subdirectory(void *buff\n \n \t\tused += len;\n \t\tsize -= len;\n-\t\tbuffer += len;\n+\t\tbuffer = (char *) buffer + len;\n \t}\n \n \twrite_sha1_file(new, newlen, tree_type, result_sha1);\n@@ -137,13 +137,13 @@ static void convert_tree(void *buffer, u\n \twhile (size) {\n \t\tint len = 1+strlen(buffer);\n \n-\t\tconvert_binary_sha1(buffer + len);\n+\t\tconvert_binary_sha1((char *) buffer + len);\n \n \t\tlen += 20;\n \t\tif (len > size)\n \t\t\tdie(\"corrupt tree object\");\n \t\tsize -= len;\n-\t\tbuffer += len;\n+\t\tbuffer = (char *) buffer + len;\n \t}\n \n \twrite_subdirectory(orig_buffer, orig_size, \"\", 0, result_sha1);\n@@ -244,14 +244,14 @@ static void convert_date(void *buffer, u\n \t// \"tree <sha1>\\n\"\n \tmemcpy(new + newlen, buffer, 46);\n \tnewlen += 46;\n-\tbuffer += 46;\n+\tbuffer = (char *) buffer + 46;\n \tsize -= 46;\n \n \t// \"parent <sha1>\\n\"\n \twhile (!memcmp(buffer, \"parent \", 7)) {\n \t\tmemcpy(new + newlen, buffer, 48);\n \t\tnewlen += 48;\n-\t\tbuffer += 48;\n+\t\tbuffer = (char *) buffer + 48;\n \t\tsize -= 48;\n \t}\n \n@@ -275,11 +275,11 @@ static void convert_commit(void *buffer,\n \n \tif (memcmp(buffer, \"tree \", 5))\n \t\tdie(\"Bad commit '%s'\", (char*) buffer);\n-\tconvert_ascii_sha1(buffer+5);\n-\tbuffer += 46;    /* \"tree \" + \"hex sha1\" + \"\\n\" */\n+\tconvert_ascii_sha1((char *) buffer + 5);\n+\tbuffer = (char *) buffer + 46;    /* \"tree \" + \"hex sha1\" + \"\\n\" */\n \twhile (!memcmp(buffer, \"parent \", 7)) {\n-\t\tconvert_ascii_sha1(buffer+7);\n-\t\tbuffer += 48;\n+\t\tconvert_ascii_sha1((char *) buffer + 7);\n+\t\tbuffer = (char *) buffer + 48;\n \t}\n \tconvert_date(orig_buffer, orig_size, result_sha1);\n }\ndiff --git a/csum-file.c b/csum-file.c\nindex 5f9249a..ebaad03 100644\n--- a/csum-file.c\n+++ b/csum-file.c\n@@ -17,7 +17,7 @@ static int sha1flush(struct sha1file *f,\n \tfor (;;) {\n \t\tint ret = xwrite(f->fd, buf, count);\n \t\tif (ret > 0) {\n-\t\t\tbuf += ret;\n+\t\t\tbuf = (char *) buf + ret;\n \t\t\tcount -= ret;\n \t\t\tif (count)\n \t\t\t\tcontinue;\n@@ -57,7 +57,7 @@ int sha1write(struct sha1file *f, void *\n \t\tmemcpy(f->buffer + offset, buf, nr);\n \t\tcount -= nr;\n \t\toffset += nr;\n-\t\tbuf += nr;\n+\t\tbuf = (char *) buf + nr;\n \t\tleft -= nr;\n \t\tif (!left) {\n \t\t\tSHA1_Update(&f->ctx, f->buffer, offset);\ndiff --git a/diff-delta.c b/diff-delta.c\nindex 74486b1..8b9172a 100644\n--- a/diff-delta.c\n+++ b/diff-delta.c\n@@ -284,7 +284,7 @@ create_delta(const struct delta_index *i\n \tref_data = index->src_buf;\n \tref_top = ref_data + index->src_size;\n \tdata = trg_buf;\n-\ttop = trg_buf + trg_size;\n+\ttop = (const unsigned char *) trg_buf + trg_size;\n \n \toutpos++;\n \tval = 0;\ndiff --git a/diff.c b/diff.c\nindex 9e9cfc8..fb1411c 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -515,7 +515,7 @@ static void emit_binary_diff(mmfile_t *o\n \t\telse\n \t\t\tline[0] = bytes - 26 + 'a' - 1;\n \t\tencode_85(line + 1, cp, bytes);\n-\t\tcp += bytes;\n+\t\tcp = (char *) cp + bytes;\n \t\tputs(line);\n \t}\n \tprintf(\"\\n\");\ndiff --git a/diffcore-order.c b/diffcore-order.c\nindex 0bc2b22..aef6da6 100644\n--- a/diffcore-order.c\n+++ b/diffcore-order.c\n@@ -30,7 +30,7 @@ static void prepare_order(const char *or\n \tclose(fd);\n \tif (map == MAP_FAILED)\n \t\treturn;\n-\tendp = map + st.st_size;\n+\tendp = (char *) map + st.st_size;\n \tfor (pass = 0; pass < 2; pass++) {\n \t\tcnt = 0;\n \t\tcp = map;\ndiff --git a/http-fetch.c b/http-fetch.c\nindex 3a2cb5e..2b63d89 100644\n--- a/http-fetch.c\n+++ b/http-fetch.c\n@@ -123,7 +123,7 @@ static size_t fwrite_sha1_file(void *ptr\n \tstruct object_request *obj_req = (struct object_request *)data;\n \tdo {\n \t\tssize_t retval = write(obj_req->local,\n-\t\t\t\t       ptr + posn, size - posn);\n+\t\t\t\t       (char *) ptr + posn, size - posn);\n \t\tif (retval < 0)\n \t\t\treturn posn;\n \t\tposn += retval;\ndiff --git a/http-push.c b/http-push.c\nindex 364ab76..0684e46 100644\n--- a/http-push.c\n+++ b/http-push.c\n@@ -196,7 +196,7 @@ static size_t fwrite_sha1_file(void *ptr\n \tstruct transfer_request *request = (struct transfer_request *)data;\n \tdo {\n \t\tssize_t retval = write(request->local_fileno,\n-\t\t\t\t       ptr + posn, size - posn);\n+\t\t\t\t       (char *) ptr + posn, size - posn);\n \t\tif (retval < 0)\n \t\t\treturn posn;\n \t\tposn += retval;\ndiff --git a/http.c b/http.c\nindex 08769cc..6c1937b 100644\n--- a/http.c\n+++ b/http.c\n@@ -34,7 +34,7 @@ size_t fread_buffer(void *ptr, size_t el\n \tsize_t size = eltsize * nmemb;\n \tif (size > buffer->size - buffer->posn)\n \t\tsize = buffer->size - buffer->posn;\n-\tmemcpy(ptr, buffer->buffer + buffer->posn, size);\n+\tmemcpy(ptr, (char *) buffer->buffer + buffer->posn, size);\n \tbuffer->posn += size;\n \treturn size;\n }\n@@ -49,7 +49,7 @@ size_t fwrite_buffer(const void *ptr, si\n \t\t\tbuffer->size = buffer->posn + size;\n \t\tbuffer->buffer = xrealloc(buffer->buffer, buffer->size);\n \t}\n-\tmemcpy(buffer->buffer + buffer->posn, ptr, size);\n+\tmemcpy((char *) buffer->buffer + buffer->posn, ptr, size);\n \tbuffer->posn += size;\n \tdata_received++;\n \treturn size;\ndiff --git a/pack-check.c b/pack-check.c\nindex e575879..3a62e1b 100644\n--- a/pack-check.c\n+++ b/pack-check.c\n@@ -29,10 +29,10 @@ static int verify_packfile(struct packed\n \tpack_base = p->pack_base;\n \tSHA1_Update(&ctx, pack_base, pack_size - 20);\n \tSHA1_Final(sha1, &ctx);\n-\tif (memcmp(sha1, pack_base + pack_size - 20, 20))\n+\tif (memcmp(sha1, (char *) pack_base + pack_size - 20, 20))\n \t\treturn error(\"Packfile %s SHA1 mismatch with itself\",\n \t\t\t     p->pack_name);\n-\tif (memcmp(sha1, index_base + index_size - 40, 20))\n+\tif (memcmp(sha1, (char *) index_base + index_size - 40, 20))\n \t\treturn error(\"Packfile %s SHA1 mismatch with idx\",\n \t\t\t     p->pack_name);\n \n@@ -135,7 +135,7 @@ int verify_pack(struct packed_git *p, in\n \tSHA1_Init(&ctx);\n \tSHA1_Update(&ctx, index_base, index_size - 20);\n \tSHA1_Final(sha1, &ctx);\n-\tif (memcmp(sha1, index_base + index_size - 20, 20))\n+\tif (memcmp(sha1, (char *) index_base + index_size - 20, 20))\n \t\tret = error(\"Packfile index for %s SHA1 mismatch\",\n \t\t\t    p->pack_name);\n \ndiff --git a/pack-objects.c b/pack-objects.c\nindex 179560f..ba6525d 100644\n--- a/pack-objects.c\n+++ b/pack-objects.c\n@@ -156,7 +156,7 @@ static void prepare_pack_revindex(struct\n \n \trix->revindex = xmalloc(sizeof(unsigned long) * (num_ent + 1));\n \tfor (i = 0; i < num_ent; i++) {\n-\t\tunsigned int hl = *((unsigned int *)(index + 24 * i));\n+\t\tunsigned int hl = *((unsigned int *)((char *) index + 24*i));\n \t\trix->revindex[i] = ntohl(hl);\n \t}\n \t/* This knows the pack format -- the 20-byte trailer\n@@ -300,7 +300,7 @@ static unsigned long write_object(struct\n \t\tuse_packed_git(p);\n \n \t\tdatalen = find_packed_object_size(p, entry->in_pack_offset);\n-\t\tbuf = p->pack_base + entry->in_pack_offset;\n+\t\tbuf = (char *) p->pack_base + entry->in_pack_offset;\n \t\tsha1write(f, buf, datalen);\n \t\tunuse_packed_git(p);\n \t\thdrlen = 0; /* not really */\ndiff --git a/pack-redundant.c b/pack-redundant.c\nindex cd81f5a..4864a2b 100644\n--- a/pack-redundant.c\n+++ b/pack-redundant.c\n@@ -246,12 +246,12 @@ static struct pack_list * pack_list_diff\n static void cmp_two_packs(struct pack_list *p1, struct pack_list *p2)\n {\n \tint p1_off, p2_off;\n-\tvoid *p1_base, *p2_base;\n+\tunsigned char *p1_base, *p2_base;\n \tstruct llist_item *p1_hint = NULL, *p2_hint = NULL;\n \t\n \tp1_off = p2_off = 256 * 4 + 4;\n-\tp1_base = (void *)p1->pack->index_base;\n-\tp2_base = (void *)p2->pack->index_base;\n+\tp1_base = (unsigned char *) p1->pack->index_base;\n+\tp2_base = (unsigned char *) p2->pack->index_base;\n \n \twhile (p1_off <= p1->pack->index_size - 3 * 20 &&\n \t       p2_off <= p2->pack->index_size - 3 * 20)\n@@ -351,11 +351,11 @@ static size_t sizeof_union(struct packed\n {\n \tsize_t ret = 0;\n \tint p1_off, p2_off;\n-\tvoid *p1_base, *p2_base;\n+\tchar *p1_base, *p2_base;\n \n \tp1_off = p2_off = 256 * 4 + 4;\n-\tp1_base = (void *)p1->index_base;\n-\tp2_base = (void *)p2->index_base;\n+\tp1_base = (char *)p1->index_base;\n+\tp2_base = (char *)p2->index_base;\n \n \twhile (p1_off <= p1->index_size - 3 * 20 &&\n \t       p2_off <= p2->index_size - 3 * 20)\n@@ -534,7 +534,7 @@ static struct pack_list * add_pack(struc\n {\n \tstruct pack_list l;\n \tsize_t off;\n-\tvoid *base;\n+\tunsigned char *base;\n \n \tif (!p->pack_local && !(alt_odb || verbose))\n \t\treturn NULL;\n@@ -543,7 +543,7 @@ static struct pack_list * add_pack(struc\n \tllist_init(&l.all_objects);\n \n \toff = 256 * 4 + 4;\n-\tbase = (void *)p->index_base;\n+\tbase = (unsigned char *)p->index_base;\n \twhile (off <= p->index_size - 3 * 20) {\n \t\tllist_insert_back(l.all_objects, base + off);\n \t\toff += 24;\ndiff --git a/patch-delta.c b/patch-delta.c\nindex 8f318ed..e3a1d42 100644\n--- a/patch-delta.c\n+++ b/patch-delta.c\n@@ -25,7 +25,7 @@ void *patch_delta(const void *src_buf, u\n \t\treturn NULL;\n \n \tdata = delta_buf;\n-\ttop = delta_buf + delta_size;\n+\ttop = (const unsigned char *) delta_buf + delta_size;\n \n \t/* make sure the orig file size matches what we expect */\n \tsize = get_delta_hdr_size(&data, top);\n@@ -56,7 +56,7 @@ void *patch_delta(const void *src_buf, u\n \t\t\t    cp_off + cp_size > src_size ||\n \t\t\t    cp_size > size)\n \t\t\t\tgoto bad;\n-\t\t\tmemcpy(out, src_buf + cp_off, cp_size);\n+\t\t\tmemcpy(out, (char *) src_buf + cp_off, cp_size);\n \t\t\tout += cp_size;\n \t\t\tsize -= cp_size;\n \t\t} else if (cmd) {\ndiff --git a/pkt-line.c b/pkt-line.c\nindex bb3bab0..44d4296 100644\n--- a/pkt-line.c\n+++ b/pkt-line.c\n@@ -21,7 +21,7 @@ static void safe_write(int fd, const voi\n \twhile (n) {\n \t\tint ret = xwrite(fd, buf, n);\n \t\tif (ret > 0) {\n-\t\t\tbuf += ret;\n+\t\t\tbuf = (char *) buf + ret;\n \t\t\tn -= ret;\n \t\t\tcontinue;\n \t\t}\n@@ -66,7 +66,7 @@ static void safe_read(int fd, void *buff\n \tint n = 0;\n \n \twhile (n < size) {\n-\t\tint ret = xread(fd, buffer + n, size - n);\n+\t\tint ret = xread(fd, (char *) buffer + n, size - n);\n \t\tif (ret < 0)\n \t\t\tdie(\"read error (%s)\", strerror(errno));\n \t\tif (!ret)\ndiff --git a/read-cache.c b/read-cache.c\nindex c499c51..3c32aae 100644\n--- a/read-cache.c\n+++ b/read-cache.c\n@@ -706,7 +706,7 @@ static int verify_hdr(struct cache_heade\n \tSHA1_Init(&c);\n \tSHA1_Update(&c, hdr, size - 20);\n \tSHA1_Final(sha1, &c);\n-\tif (memcmp(sha1, (void *)hdr + size - 20, 20))\n+\tif (memcmp(sha1, (char *) hdr + size - 20, 20))\n \t\treturn error(\"bad index file sha1 signature\");\n \treturn 0;\n }\n@@ -770,7 +770,7 @@ int read_cache(void)\n \n \toffset = sizeof(*hdr);\n \tfor (i = 0; i < active_nr; i++) {\n-\t\tstruct cache_entry *ce = map + offset;\n+\t\tstruct cache_entry *ce = (struct cache_entry *) ((char *) map + offset);\n \t\toffset = offset + ce_size(ce);\n \t\tactive_cache[i] = ce;\n \t}\n@@ -783,10 +783,11 @@ int read_cache(void)\n \t\t * in 4-byte network byte order.\n \t\t */\n \t\tunsigned long extsize;\n-\t\tmemcpy(&extsize, map + offset + 4, 4);\n+\t\tmemcpy(&extsize, (char *) map + offset + 4, 4);\n \t\textsize = ntohl(extsize);\n-\t\tif (read_index_extension(map + offset,\n-\t\t\t\t\t map + offset + 8, extsize) < 0)\n+\t\tif (read_index_extension(((const char *) map) + offset,\n+\t\t\t\t\t (char *) map + offset + 8,\n+\t\t\t\t\t extsize) < 0)\n \t\t\tgoto unmap;\n \t\toffset += 8;\n \t\toffset += extsize;\n@@ -820,7 +821,7 @@ static int ce_write(SHA_CTX *context, in\n \t\t}\n \t\twrite_buffer_len = buffered;\n \t\tlen -= partial;\n-\t\tdata += partial;\n+\t\tdata = (char *) data + partial;\n  \t}\n  \treturn 0;\n }\ndiff --git a/sha1_file.c b/sha1_file.c\nindex b4ff233..3c001d7 100644\n--- a/sha1_file.c\n+++ b/sha1_file.c\n@@ -486,7 +486,8 @@ int use_packed_git(struct packed_git *p)\n \t\t * this is cheap.\n \t\t */\n \t\tif (memcmp((char*)(p->index_base) + p->index_size - 40,\n-\t\t\t   p->pack_base + p->pack_size - 20, 20)) {\n+\t\t\t   (char *) p->pack_base + p->pack_size - 20,\n+\t\t\t   20)) {\n \t\t\t      \n \t\t\tdie(\"packfile %s does not match index.\", p->pack_name);\n \t\t}\n@@ -701,7 +702,7 @@ static void *unpack_sha1_rest(z_stream *\n \tint bytes = strlen(buffer) + 1;\n \tunsigned char *buf = xmalloc(1+size);\n \n-\tmemcpy(buf, buffer + bytes, stream->total_out - bytes);\n+\tmemcpy(buf, (char *) buffer + bytes, stream->total_out - bytes);\n \tbytes = stream->total_out - bytes;\n \tif (bytes < size) {\n \t\tstream->next_out = buf + bytes;\n@@ -853,7 +854,7 @@ static unsigned long unpack_object_heade\n \tif (offset >= p->pack_size)\n \t\tdie(\"object offset outside of pack file\");\n \n-\tpack =  p->pack_base + offset;\n+\tpack =  (unsigned char *) p->pack_base + offset;\n \tc = *pack++;\n \toffset++;\n \t*type = (c >> 4) & 7;\n@@ -883,7 +884,7 @@ int check_reuse_pack_delta(struct packed\n \tptr = unpack_object_header(p, ptr, kindp, sizep);\n \tif (*kindp != OBJ_DELTA)\n \t\tgoto done;\n-\tmemcpy(base, p->pack_base + ptr, 20);\n+\tmemcpy(base, (char *) p->pack_base + ptr, 20);\n \tstatus = 0;\n  done:\n \tunuse_packed_git(p);\n@@ -903,7 +904,7 @@ void packed_object_info_detail(struct pa\n \tenum object_type kind;\n \n \toffset = unpack_object_header(p, e->offset, &kind, size);\n-\tpack = p->pack_base + offset;\n+\tpack = (unsigned char *) p->pack_base + offset;\n \tif (kind != OBJ_DELTA)\n \t\t*delta_chain_length = 0;\n \telse {\n@@ -919,7 +920,7 @@ void packed_object_info_detail(struct pa\n \t\t\tfind_pack_entry_one(pack, &base_ent, p);\n \t\t\toffset = unpack_object_header(p, base_ent.offset,\n \t\t\t\t\t\t      &kind, &junk);\n-\t\t\tpack = p->pack_base + offset;\n+\t\t\tpack = (unsigned char *) p->pack_base + offset;\n \t\t\tchain_length++;\n \t\t} while (kind == OBJ_DELTA);\n \t\t*delta_chain_length = chain_length;\n@@ -957,7 +958,7 @@ static int packed_object_info(struct pac\n \t\tdie(\"cannot map packed file\");\n \n \toffset = unpack_object_header(p, entry->offset, &kind, &size);\n-\tpack = p->pack_base + offset;\n+\tpack = (unsigned char *) p->pack_base + offset;\n \tleft = p->pack_size - offset;\n \n \tswitch (kind) {\n@@ -1096,7 +1097,7 @@ void *unpack_entry_gently(struct pack_en\n \tvoid *retval;\n \n \toffset = unpack_object_header(p, entry->offset, &kind, &size);\n-\tpack = p->pack_base + offset;\n+\tpack = (unsigned char *) p->pack_base + offset;\n \tleft = p->pack_size - offset;\n \tswitch (kind) {\n \tcase OBJ_DELTA:\n@@ -1134,7 +1135,7 @@ int nth_packed_object_sha1(const struct \n \tvoid *index = p->index_base + 256;\n \tif (n < 0 || num_packed_objects(p) <= n)\n \t\treturn -1;\n-\tmemcpy(sha1, (index + 24 * n + 4), 20);\n+\tmemcpy(sha1, (char *) index + (24 * n) + 4, 20);\n \treturn 0;\n }\n \n@@ -1148,9 +1149,9 @@ int find_pack_entry_one(const unsigned c\n \n \tdo {\n \t\tint mi = (lo + hi) / 2;\n-\t\tint cmp = memcmp(index + 24 * mi + 4, sha1, 20);\n+\t\tint cmp = memcmp((char *) index + (24 * mi) + 4, sha1, 20);\n \t\tif (!cmp) {\n-\t\t\te->offset = ntohl(*((unsigned int *)(index + 24 * mi)));\n+\t\t\te->offset = ntohl(*((unsigned int *) ((char *) index + (24 * mi))));\n \t\t\tmemcpy(e->sha1, sha1, 20);\n \t\t\te->p = p;\n \t\t\treturn 1;\n@@ -1290,7 +1291,7 @@ void *read_object_with_reference(const u\n \t\tref_length = strlen(ref_type);\n \n \t\tif (memcmp(buffer, ref_type, ref_length) ||\n-\t\t    get_sha1_hex(buffer + ref_length, actual_sha1)) {\n+\t\t    get_sha1_hex((char *) buffer + ref_length, actual_sha1)) {\n \t\t\tfree(buffer);\n \t\t\treturn NULL;\n \t\t}\n@@ -1408,7 +1409,7 @@ static int write_buffer(int fd, const vo\n \t\t\treturn error(\"file write error (%s)\", strerror(errno));\n \t\t}\n \t\tlen -= size;\n-\t\tbuf += size;\n+\t\tbuf = (char *) buf + size;\n \t}\n \treturn 0;\n }\ndiff --git a/ssh-fetch.c b/ssh-fetch.c\nindex e3067b8..1e59cd2 100644\n--- a/ssh-fetch.c\n+++ b/ssh-fetch.c\n@@ -24,7 +24,7 @@ static ssize_t force_write(int fd, void \n {\n \tssize_t ret = 0;\n \twhile (ret < length) {\n-\t\tssize_t size = write(fd, buffer + ret, length - ret);\n+\t\tssize_t size = write(fd, (char *) buffer + ret, length - ret);\n \t\tif (size < 0) {\n \t\t\treturn size;\n \t\t}\ndiff --git a/tag.c b/tag.c\nindex f390ee7..13c364d 100644\n--- a/tag.c\n+++ b/tag.c\n@@ -47,10 +47,10 @@ int parse_tag_buffer(struct tag *item, v\n \n \tif (size < 64)\n \t\treturn -1;\n-\tif (memcmp(\"object \", data, 7) || get_sha1_hex(data + 7, object))\n+\tif (memcmp(\"object \", data, 7) || get_sha1_hex((char *) data + 7, object))\n \t\treturn -1;\n \n-\ttype_line = data + 48;\n+\ttype_line = (char *) data + 48;\n \tif (memcmp(\"\\ntype \", type_line-1, 6))\n \t\treturn -1;\n \ndiff --git a/tree-walk.c b/tree-walk.c\nindex 297c697..3f83e98 100644\n--- a/tree-walk.c\n+++ b/tree-walk.c\n@@ -43,7 +43,7 @@ void update_tree_entry(struct tree_desc \n \n \tif (size < len)\n \t\tdie(\"corrupt tree file\");\n-\tdesc->buf = buf + len;\n+\tdesc->buf = (char *) buf + len;\n \tdesc->size = size - len;\n }\n \n@@ -66,7 +66,7 @@ const unsigned char *tree_entry_extract(\n \tconst void *tree = desc->buf;\n \tunsigned long size = desc->size;\n \tint len = strlen(tree)+1;\n-\tconst unsigned char *sha1 = tree + len;\n+\tconst unsigned char *sha1 = (unsigned char *) tree + len;\n \tconst char *path;\n \tunsigned int mode;\n \n@@ -80,7 +80,8 @@ const unsigned char *tree_entry_extract(\n \n int tree_entry(struct tree_desc *desc, struct name_entry *entry)\n {\n-\tconst void *tree = desc->buf, *path;\n+\tconst void *tree = desc->buf;\n+\tconst char *path;\n \tunsigned long len, size = desc->size;\n \n \tif (!size)\n@@ -95,10 +96,10 @@ int tree_entry(struct tree_desc *desc, s\n \tentry->pathlen = len;\n \n \tpath += len + 1;\n-\tentry->sha1 = path;\n+\tentry->sha1 = (const unsigned char *) path;\n \n \tpath += 20;\n-\tlen = path - tree;\n+\tlen = path - (char *) tree;\n \tif (len > size)\n \t\tdie(\"corrupt tree file\");\n \n-- \n1.3.3\n"}]}