{"thread":{"id":"62854","subject":"[PATCH v3 3/4] apply.c : Fix type conversation warnings from msvc","startedAt":"2025-01-26T12:59:50Z","lastAt":"2025-01-26T12:59:50Z","messageCount":1,"participants":["Sören Krecker"],"isPatch":true,"patchVersion":3,"patchTotal":4},"messages":[{"id":"511207","messageId":"20250126125945.3241-1-soekkle@freenet.de","threadId":"62854","inReplyTo":null,"subject":"[PATCH v3 3/4] apply.c : Fix type conversation warnings from msvc","fromName":"Sören Krecker","fromEmail":"soekkle@freenet.de","sentAt":"2025-01-26T12:59:45Z","receivedAt":"2025-01-26T12:59:50Z","isPatch":true,"sender":{"key":"soekkle@freenet.de","avatar":"https://avatars.githubusercontent.com/u/6253399?v=4"},"body":"Fix compiler warnings from msvc in apply.c for value truncation from 64\nbit to 32 bit integers.\n\nAlso switch from int to size_t for all variables with result of strlen()\nwhich cannot become negative.\n\nSigned-off-by: Sören Krecker <soekkle@freenet.de>\n---\n apply.c | 37 +++++++++++++++++++------------------\n apply.h |  6 +++---\n 2 files changed, 22 insertions(+), 21 deletions(-)\n\ndiff --git a/apply.c b/apply.c\nindex 4a7b6120ac..b896889505 100644\n--- a/apply.c\n+++ b/apply.c\n@@ -414,9 +414,9 @@ static int read_patch_file(struct strbuf *sb, int fd)\n \treturn 0;\n }\n \n-static unsigned long linelen(const char *buffer, unsigned long size)\n+static size_t linelen(const char *buffer, size_t size)\n {\n-\tunsigned long len = 0;\n+\tsize_t len = 0;\n \twhile (size--) {\n \t\tlen++;\n \t\tif (*buffer++ == '\\n')\n@@ -688,7 +688,7 @@ static char *find_name_common(struct strbuf *root,\n \t * or \"file~\").\n \t */\n \tif (def) {\n-\t\tint deflen = strlen(def);\n+\t\tsize_t deflen = strlen(def);\n \t\tif (deflen < len && !strncmp(start, def, deflen))\n \t\t\treturn squash_slash(xstrdup(def));\n \t}\n@@ -1088,7 +1088,7 @@ static int gitdiff_index(struct gitdiff_data *state,\n \t */\n \tconst char *ptr, *eol;\n \tint len;\n-\tconst unsigned hexsz = the_hash_algo->hexsz;\n+\tconst size_t hexsz = the_hash_algo->hexsz;\n \n \tptr = strchr(line, '.');\n \tif (!ptr || ptr[1] != '.' || hexsz < ptr - line)\n@@ -1131,7 +1131,7 @@ static int gitdiff_unrecognized(struct gitdiff_data *state UNUSED,\n  */\n static const char *skip_tree_prefix(int p_value,\n \t\t\t\t    const char *line,\n-\t\t\t\t    int llen)\n+\t\t\t\t    size_t llen)\n {\n \tint nslash;\n \tint i;\n@@ -1158,7 +1158,7 @@ static const char *skip_tree_prefix(int p_value,\n  */\n static char *git_header_name(int p_value,\n \t\t\t     const char *line,\n-\t\t\t     int llen)\n+\t\t\t     ssize_t llen)\n {\n \tconst char *name;\n \tconst char *second = NULL;\n@@ -1313,15 +1313,15 @@ static int check_header_line(int linenr, struct patch *patch)\n \treturn 0;\n }\n \n-int parse_git_diff_header(struct strbuf *root,\n+size_t parse_git_diff_header(struct strbuf *root,\n \t\t\t  int *linenr,\n \t\t\t  int p_value,\n \t\t\t  const char *line,\n-\t\t\t  int len,\n-\t\t\t  unsigned int size,\n+\t\t\t  size_t len,\n+\t\t\t  size_t size,\n \t\t\t  struct patch *patch)\n {\n-\tunsigned long offset;\n+\tsize_t offset;\n \tstruct gitdiff_data parse_hdr_state;\n \n \t/* A git diff has explicit new/delete information, so we don't guess */\n@@ -1378,7 +1378,7 @@ int parse_git_diff_header(struct strbuf *root,\n \t\t\tbreak;\n \t\tfor (i = 0; i < ARRAY_SIZE(optable); i++) {\n \t\t\tconst struct opentry *p = optable + i;\n-\t\t\tint oplen = strlen(p->str);\n+\t\t\tsize_t oplen = strlen(p->str);\n \t\t\tint res;\n \t\t\tif (len < oplen || memcmp(p->str, line, oplen))\n \t\t\t\tcontinue;\n@@ -1430,7 +1430,8 @@ static int parse_num(const char *line, unsigned long *p)\n static int parse_range(const char *line, int len, int offset, const char *expect,\n \t\t       unsigned long *p1, unsigned long *p2)\n {\n-\tint digits, ex;\n+\tint digits;\n+\tsize_t ex;\n \n \tif (offset < 0 || offset >= len)\n \t\treturn -1;\n@@ -1465,7 +1466,7 @@ static int parse_range(const char *line, int len, int offset, const char *expect\n \treturn offset + ex;\n }\n \n-static void recount_diff(const char *line, int size, struct fragment *fragment)\n+static void recount_diff(const char *line, size_t size, struct fragment *fragment)\n {\n \tint oldlines = 0, newlines = 0, ret = 0;\n \n@@ -1475,7 +1476,7 @@ static void recount_diff(const char *line, int size, struct fragment *fragment)\n \t}\n \n \tfor (;;) {\n-\t\tint len = linelen(line, size);\n+\t\tsize_t len = linelen(line, size);\n \t\tsize -= len;\n \t\tline += len;\n \n@@ -1543,11 +1544,11 @@ static int parse_fragment_header(const char *line, int len, struct fragment *fra\n  */\n static int find_header(struct apply_state *state,\n \t\t       const char *line,\n-\t\t       unsigned long size,\n+\t\t       size_t size,\n \t\t       int *hdrsize,\n \t\t       struct patch *patch)\n {\n-\tunsigned long offset, len;\n+\tsize_t offset, len;\n \n \tpatch->is_toplevel_relative = 0;\n \tpatch->is_rename = patch->is_copy = 0;\n@@ -2132,7 +2133,7 @@ static int use_patch(struct apply_state *state, struct patch *p)\n  *   the number of bytes consumed otherwise,\n  *     so that the caller can call us again for the next patch.\n  */\n-static int parse_chunk(struct apply_state *state, char *buffer, unsigned long size, struct patch *patch)\n+static int parse_chunk(struct apply_state *state, char *buffer, size_t size, struct patch *patch)\n {\n \tint hdrsize, patchsize;\n \tint offset = find_header(state, buffer, size, &hdrsize, patch);\n@@ -2491,7 +2492,7 @@ static int match_fragment(struct apply_state *state,\n \tstruct strbuf fixed = STRBUF_INIT;\n \tchar *fixed_buf;\n \tsize_t fixed_len;\n-\tint preimage_limit;\n+\tssize_t preimage_limit;\n \tint ret;\n \n \tif (preimage->line_nr + current_lno <= img->line_nr) {\ndiff --git a/apply.h b/apply.h\nindex 90e887ec0e..bb01ce7dbc 100644\n--- a/apply.h\n+++ b/apply.h\n@@ -166,12 +166,12 @@ int check_apply_state(struct apply_state *state, int force_apply);\n  *\n  * Returns -1 on failure, the length of the parsed header otherwise.\n  */\n-int parse_git_diff_header(struct strbuf *root,\n+size_t parse_git_diff_header(struct strbuf *root,\n \t\t\t  int *linenr,\n \t\t\t  int p_value,\n \t\t\t  const char *line,\n-\t\t\t  int len,\n-\t\t\t  unsigned int size,\n+\t\t\t  size_t len,\n+\t\t\t  size_t size,\n \t\t\t  struct patch *patch);\n \n void release_patch(struct patch *patch);\n-- \n2.39.5\n\n"}]}