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
							parent
							
								
									51a60f5bfb
								
							
						
					
					
						commit
						5c0b13f85a
					
				|  | @ -2869,9 +2869,7 @@ static int apply_binary_fragment(struct image *img, struct patch *patch) | ||||||
| 	case BINARY_LITERAL_DEFLATED: | 	case BINARY_LITERAL_DEFLATED: | ||||||
| 		clear_image(img); | 		clear_image(img); | ||||||
| 		img->len = fragment->size; | 		img->len = fragment->size; | ||||||
| 		img->buf = xmalloc(img->len+1); | 		img->buf = xmemdupz(fragment->patch, img->len); | ||||||
| 		memcpy(img->buf, fragment->patch, img->len); |  | ||||||
| 		img->buf[img->len] = '\0'; |  | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 	return -1; | 	return -1; | ||||||
|  |  | ||||||
|  | @ -2458,11 +2458,8 @@ parse_done: | ||||||
| 		die("revision walk setup failed"); | 		die("revision walk setup failed"); | ||||||
|  |  | ||||||
| 	if (is_null_sha1(sb.final->object.sha1)) { | 	if (is_null_sha1(sb.final->object.sha1)) { | ||||||
| 		char *buf; |  | ||||||
| 		o = sb.final->util; | 		o = sb.final->util; | ||||||
| 		buf = xmalloc(o->file.size + 1); | 		sb.final_buf = xmemdupz(o->file.ptr, o->file.size); | ||||||
| 		memcpy(buf, o->file.ptr, o->file.size + 1); |  | ||||||
| 		sb.final_buf = buf; |  | ||||||
| 		sb.final_buf_size = o->file.size; | 		sb.final_buf_size = o->file.size; | ||||||
| 	} | 	} | ||||||
| 	else { | 	else { | ||||||
|  |  | ||||||
|  | @ -64,9 +64,7 @@ static void parse_one_symref_info(struct string_list *symref, const char *val, i | ||||||
| 	if (!len) | 	if (!len) | ||||||
| 		return; /* just "symref" */ | 		return; /* just "symref" */ | ||||||
| 	/* e.g. "symref=HEAD:refs/heads/master" */ | 	/* e.g. "symref=HEAD:refs/heads/master" */ | ||||||
| 	sym = xmalloc(len + 1); | 	sym = xmemdupz(val, len); | ||||||
| 	memcpy(sym, val, len); |  | ||||||
| 	sym[len] = '\0'; |  | ||||||
| 	target = strchr(sym, ':'); | 	target = strchr(sym, ':'); | ||||||
| 	if (!target) | 	if (!target) | ||||||
| 		/* just "symref=something" */ | 		/* just "symref=something" */ | ||||||
|  |  | ||||||
|  | @ -607,9 +607,7 @@ int main(int argc, char **argv) | ||||||
|  |  | ||||||
| 			cmd = c; | 			cmd = c; | ||||||
| 			n = out[0].rm_eo - out[0].rm_so; | 			n = out[0].rm_eo - out[0].rm_so; | ||||||
| 			cmd_arg = xmalloc(n); | 			cmd_arg = xmemdupz(dir + out[0].rm_so + 1, n - 1); | ||||||
| 			memcpy(cmd_arg, dir + out[0].rm_so + 1, n-1); |  | ||||||
| 			cmd_arg[n-1] = '\0'; |  | ||||||
| 			dir[out[0].rm_so] = 0; | 			dir[out[0].rm_so] = 0; | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								path.c
								
								
								
								
							
							
						
						
									
										4
									
								
								path.c
								
								
								
								
							|  | @ -249,9 +249,7 @@ int validate_headref(const char *path) | ||||||
| static struct passwd *getpw_str(const char *username, size_t len) | static struct passwd *getpw_str(const char *username, size_t len) | ||||||
| { | { | ||||||
| 	struct passwd *pw; | 	struct passwd *pw; | ||||||
| 	char *username_z = xmalloc(len + 1); | 	char *username_z = xmemdupz(username, len); | ||||||
| 	memcpy(username_z, username, len); |  | ||||||
| 	username_z[len] = '\0'; |  | ||||||
| 	pw = getpwnam(username_z); | 	pw = getpwnam(username_z); | ||||||
| 	free(username_z); | 	free(username_z); | ||||||
| 	return pw; | 	return pw; | ||||||
|  |  | ||||||
|  | @ -278,9 +278,7 @@ static string_list_ty variables_set; | ||||||
| static void | static void | ||||||
| note_variable (const char *var_ptr, size_t var_len) | note_variable (const char *var_ptr, size_t var_len) | ||||||
| { | { | ||||||
|   char *string = xmalloc (var_len + 1); |   char *string = xmemdupz (var_ptr, var_len); | ||||||
|   memcpy (string, var_ptr, var_len); |  | ||||||
|   string[var_len] = '\0'; |  | ||||||
|  |  | ||||||
|   string_list_append (&variables_set, string); |   string_list_append (&variables_set, string); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 René Scharfe
						René Scharfe