Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2014-07-19 19:35:34 +0400
committerJunio C Hamano <gitster@pobox.com>2014-07-21 21:37:02 +0400
commit5c0b13f85ab3a5326508b854768eb70c8829cda4 (patch)
treec498179a86e3e05abb664caa8d943c81ae4142f5
parent51a60f5bfbaf1ee7c7a2d2b73eca4f042f7af8cb (diff)
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>
-rw-r--r--builtin/apply.c4
-rw-r--r--builtin/blame.c5
-rw-r--r--connect.c4
-rw-r--r--http-backend.c4
-rw-r--r--path.c4
-rw-r--r--sh-i18n--envsubst.c4
6 files changed, 6 insertions, 19 deletions
diff --git a/builtin/apply.c b/builtin/apply.c
index 9c5724eacc..622ee1674a 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -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;
diff --git a/builtin/blame.c b/builtin/blame.c
index ef7cb1d254..6a284ce46b 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -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 {
diff --git a/connect.c b/connect.c
index a983d061a9..ebc3a5be7d 100644
--- a/connect.c
+++ b/connect.c
@@ -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" */
diff --git a/http-backend.c b/http-backend.c
index d2c0a625ce..f6b7a5bae1 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -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;
}
diff --git a/path.c b/path.c
index f9c5062427..c36f003930 100644
--- a/path.c
+++ b/path.c
@@ -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;
diff --git a/sh-i18n--envsubst.c b/sh-i18n--envsubst.c
index 855d28cf94..6dd03a974a 100644
--- a/sh-i18n--envsubst.c
+++ b/sh-i18n--envsubst.c
@@ -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);
}