{"thread":{"id":"22476","subject":"[PATCH] resolve-undo.c: silence compiler complaints by casting void * to char *","startedAt":"2010-02-01T23:00:00Z","lastAt":"2010-02-02T15:23:41Z","messageCount":4,"participants":["Brandon Casey","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"133293","messageId":"qzbyPiTgRGI0lsxvEmFa0WtwK5ko5snXQDNffxC66y9v0rlie5pcKzGT28WpzfQlFd0OvJNY_jo@cipher.nrlssc.navy.mil","threadId":"22476","inReplyTo":null,"subject":"[PATCH] resolve-undo.c: silence compiler complaints by casting void * to char *","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2010-02-01T23:00:00Z","receivedAt":"2010-02-01T23:00:00Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"From: Brandon Casey <drafnel@gmail.com>\n\nSome compilers produce errors when arithmetic is attempted on pointers to\nvoid.  We want computations done on byte addresses, so cast them to char *\nto work them around.\n\nSigned-off-by: Brandon Casey <casey@nrlssc.navy.mil>\n---\n resolve-undo.c |    6 +++---\n 1 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/resolve-undo.c b/resolve-undo.c\nindex 37d73cd..c259fe6 100644\n--- a/resolve-undo.c\n+++ b/resolve-undo.c\n@@ -75,7 +75,7 @@ struct string_list *resolve_undo_read(void *data, unsigned long size)\n \t\t\tlost->util = xcalloc(1, sizeof(*ui));\n \t\tui = lost->util;\n \t\tsize -= len;\n-\t\tdata += len;\n+\t\tdata = (char*) data + len;\n \n \t\tfor (i = 0; i < 3; i++) {\n \t\t\tui->mode[i] = strtoul(data, &endptr, 8);\n@@ -85,7 +85,7 @@ struct string_list *resolve_undo_read(void *data, unsigned long size)\n \t\t\tif (size <= len)\n \t\t\t\tgoto error;\n \t\t\tsize -= len;\n-\t\t\tdata += len;\n+\t\t\tdata = (char*) data + len;\n \t\t}\n \n \t\tfor (i = 0; i < 3; i++) {\n@@ -95,7 +95,7 @@ struct string_list *resolve_undo_read(void *data, unsigned long size)\n \t\t\t\tgoto error;\n \t\t\thashcpy(ui->sha1[i], data);\n \t\t\tsize -= 20;\n-\t\t\tdata += 20;\n+\t\t\tdata = (char*) data + 20;\n \t\t}\n \t}\n \treturn resolve_undo;\n-- \n1.6.6\n"},{"id":"133297","messageId":"7vsk9kplla.fsf@alter.siamese.dyndns.org","threadId":"22476","inReplyTo":"qzbyPiTgRGI0lsxvEmFa0WtwK5ko5snXQDNffxC66y9v0rlie5pcKzGT28WpzfQlFd0OvJNY_jo@cipher.nrlssc.navy.mil","subject":"Re: [PATCH] resolve-undo.c: silence compiler complaints by casting void * to char *","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-02-01T23:44:49Z","receivedAt":"2010-02-01T23:44:49Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thanks for catching this.\n\nIn this particular case, I however suspect that it would be cleaner to\ndeclare that the first parameter to resolve_undo_read() is a \"char *\"\n(or even \"const char *\"), as we are dealing with NUL delimited list of\noctal numbers and character strings.\n"},{"id":"133319","messageId":"7vr5p4favs.fsf@alter.siamese.dyndns.org","threadId":"22476","inReplyTo":"7vsk9kplla.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] resolve-undo.c: silence compiler complaints by casting void * to char *","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-02-02T05:46:15Z","receivedAt":"2010-02-02T05:46:15Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Thanks for catching this.\n>\n> In this particular case, I however suspect that it would be cleaner to\n> declare that the first parameter to resolve_undo_read() is a \"char *\"\n> (or even \"const char *\"), as we are dealing with NUL delimited list of\n> octal numbers and character strings.\n\nIt would look like this.  I wonder if we should make hash*() inline\nfunctions to take (void *) or (const void *) pointers to avoid further\nnoises like this but that would be a separate topic.\n\n resolve-undo.c |    4 ++--\n resolve-undo.h |    2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/resolve-undo.c b/resolve-undo.c\nindex 37d73cd..0f50ee0 100644\n--- a/resolve-undo.c\n+++ b/resolve-undo.c\n@@ -53,7 +53,7 @@ void resolve_undo_write(struct strbuf *sb, struct string_list *resolve_undo)\n \tfor_each_string_list(write_one, resolve_undo, sb);\n }\n \n-struct string_list *resolve_undo_read(void *data, unsigned long size)\n+struct string_list *resolve_undo_read(const char *data, unsigned long size)\n {\n \tstruct string_list *resolve_undo;\n \tsize_t len;\n@@ -93,7 +93,7 @@ struct string_list *resolve_undo_read(void *data, unsigned long size)\n \t\t\t\tcontinue;\n \t\t\tif (size < 20)\n \t\t\t\tgoto error;\n-\t\t\thashcpy(ui->sha1[i], data);\n+\t\t\thashcpy(ui->sha1[i], (const unsigned char *)data);\n \t\t\tsize -= 20;\n \t\t\tdata += 20;\n \t\t}\ndiff --git a/resolve-undo.h b/resolve-undo.h\nindex e4e5c1b..8458769 100644\n--- a/resolve-undo.h\n+++ b/resolve-undo.h\n@@ -8,7 +8,7 @@ struct resolve_undo_info {\n \n extern void record_resolve_undo(struct index_state *, struct cache_entry *);\n extern void resolve_undo_write(struct strbuf *, struct string_list *);\n-extern struct string_list *resolve_undo_read(void *, unsigned long);\n+extern struct string_list *resolve_undo_read(const char *, unsigned long);\n extern void resolve_undo_clear_index(struct index_state *);\n extern int unmerge_index_entry_at(struct index_state *, int);\n extern void unmerge_index(struct index_state *, const char **);\n"},{"id":"133360","messageId":"97tOvtEqk8MiRaSVk9lJHcwIzHMJLo8v4hw8LEH-4JfIi16BeIKnLA@cipher.nrlssc.navy.mil","threadId":"22476","inReplyTo":"7vr5p4favs.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] resolve-undo.c: silence compiler complaints by casting void * to char *","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2010-02-02T15:23:41Z","receivedAt":"2010-02-02T15:23:41Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"Junio C Hamano wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n>> Thanks for catching this.\n>>\n>> In this particular case, I however suspect that it would be cleaner to\n>> declare that the first parameter to resolve_undo_read() is a \"char *\"\n>> (or even \"const char *\"), as we are dealing with NUL delimited list of\n>> octal numbers and character strings.\n> \n> It would look like this.\n\nThis works for me.\n\nThanks,\n-brandon\n"}]}