Browse Source

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 <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 11 years ago committed by Junio C Hamano
parent
commit
5c0b13f85a
  1. 4
      builtin/apply.c
  2. 5
      builtin/blame.c
  3. 4
      connect.c
  4. 4
      http-backend.c
  5. 4
      path.c
  6. 4
      sh-i18n--envsubst.c

4
builtin/apply.c

@ -2869,9 +2869,7 @@ static int apply_binary_fragment(struct image *img, struct patch *patch) @@ -2869,9 +2869,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;

5
builtin/blame.c

@ -2458,11 +2458,8 @@ parse_done: @@ -2458,11 +2458,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 {

4
connect.c

@ -64,9 +64,7 @@ static void parse_one_symref_info(struct string_list *symref, const char *val, i @@ -64,9 +64,7 @@ static void parse_one_symref_info(struct string_list *symref, const char *val, i
if (!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" */

4
http-backend.c

@ -607,9 +607,7 @@ int main(int argc, char **argv) @@ -607,9 +607,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;
}

4
path.c

@ -249,9 +249,7 @@ int validate_headref(const char *path) @@ -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;

4
sh-i18n--envsubst.c

@ -278,9 +278,7 @@ static string_list_ty variables_set; @@ -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);
}

Loading…
Cancel
Save