use xmemdupz() to allocate copies of strings given by start and length
PATCH 1/1 use xmemdupz() to allocate copies of strings given by start and length
Use xmemdupz() to allocate the memory, copy the data and make sure to NUL-terminate the result, all in one step. The resulting code is shorter, doesn't contain the constants 1 and '\0', and avoids duplicating function parameters.
For blame, the last copied byte (o->file.ptr[o->file.size]) is always set to NUL by fake_working_tree_commit() or read_sha1_file(), so no information is lost by the conversion to using xmemdupz().
Signed-off-by Rene Scharfe <[email protected]>
--- builtin/apply.c | 4 +--- builtin/blame.c | 5 +---- connect.c | 4 +--- http-backend.c | 4 +--- path.c | 4 +--- sh-i18n--envsubst.c | 4 +--- 6 files changed, 6 insertions(+), 19 deletions(-)
builtin/apply.c +1 -3
@@ -2867,9 +2867,7 @@ static int apply_binary_fragment(struct image *img, struct patch *patch)case BINARY_LITERAL_DEFLATED :clear_image (img); img->len = fragment->size; - img->buf =xmalloc (img->len+1 ); -memcpy (img->buf, fragment->patch, img->len); - img->buf[img->len] ='\0' ; + img->buf =xmemdupz (fragment->patch, img->len);return 0 ; }return -1 ;
builtin/blame.c +1 -4
@@ -2707,11 +2707,8 @@ parse_done:die ("revision walk setup failed" );if (is_null_sha1 (sb.final->object.sha1)) { -char *buf; o = sb.final->util; - buf =xmalloc (o->file.size +1 ); -memcpy (buf, o->file.ptr, o->file.size +1 ); - sb.final_buf = buf; + sb.final_buf =xmemdupz (o->file.ptr, o->file.size); sb.final_buf_size = o->file.size; }else {
connect.c +1 -3
@@ -64,9 +64,7 @@ static void parse_one_symref_info(struct string_list *symref, const char *val, iif (!len)return ;/* just "symref" */ /* e.g. "symref=HEAD:refs/heads/master" */ - sym =xmalloc (len +1 ); -memcpy (sym, val, len); - sym[len] ='\0' ; + sym =xmemdupz (val, len); target =strchr (sym,':' );if (!target)/* just "symref=something" */
http-backend.c +1 -3
@@ -610,9 +610,7 @@ int main(int argc, char **argv) cmd = c; n = out[0 ].rm_eo - out[0 ].rm_so; - cmd_arg =xmalloc (n); -memcpy (cmd_arg, dir + out[0 ].rm_so +1 , n-1 ); - cmd_arg[n-1 ] ='\0' ; + cmd_arg =xmemdupz (dir + out[0 ].rm_so +1 , n -1 ); dir[out[0 ].rm_so] =0 ;break ; }
path.c +1 -3
@@ -249,9 +249,7 @@ int validate_headref(const char *path)static struct passwd *getpw_str (const char *username,size_t len) {struct passwd *pw; -char *username_z =xmalloc (len +1 ); -memcpy (username_z, username, len); - username_z[len] ='\0' ; +char *username_z =xmemdupz (username, len); pw =getpwnam (username_z);free (username_z);return pw;
sh-i18n--envsubst.c +1 -3
@@ -278,9 +278,7 @@ static string_list_ty variables_set;static void note_variable (const char *var_ptr,size_t var_len) { -char *string =xmalloc (var_len +1 ); -memcpy (string, var_ptr, var_len); - string[var_len] ='\0' ; +char *string =xmemdupz (var_ptr, var_len);string_list_append (&variables_set, string); }
Signature · 1 line
2.0.2