Merge branch 'jk/tighten-alloc'
Update various codepaths to avoid manually-counted malloc(). * jk/tighten-alloc: (22 commits) ewah: convert to REALLOC_ARRAY, etc convert ewah/bitmap code to use xmalloc diff_populate_gitlink: use a strbuf transport_anonymize_url: use xstrfmt git-compat-util: drop mempcpy compat code sequencer: simplify memory allocation of get_message test-path-utils: fix normalize_path_copy output buffer size fetch-pack: simplify add_sought_entry fast-import: simplify allocation in start_packfile write_untracked_extension: use FLEX_ALLOC helper prepare_{git,shell}_cmd: use argv_array use st_add and st_mult for allocation size computation convert trivial cases to FLEX_ARRAY macros use xmallocz to avoid size arithmetic convert trivial cases to ALLOC_ARRAY convert manual allocations to argv_array argv-array: add detach function add helpers for allocating flex-array structs harden REALLOC_ARRAY and xcalloc against size_t overflow tree-diff: catch integer overflow in combine_diff_path allocation ...
This commit is contained in:
29
sequencer.c
29
sequencer.c
@ -124,42 +124,33 @@ static const char *action_name(const struct replay_opts *opts)
|
||||
|
||||
struct commit_message {
|
||||
char *parent_label;
|
||||
const char *label;
|
||||
const char *subject;
|
||||
char *label;
|
||||
char *subject;
|
||||
const char *message;
|
||||
};
|
||||
|
||||
static int get_message(struct commit *commit, struct commit_message *out)
|
||||
{
|
||||
const char *abbrev, *subject;
|
||||
int abbrev_len, subject_len;
|
||||
char *q;
|
||||
int subject_len;
|
||||
|
||||
if (!git_commit_encoding)
|
||||
git_commit_encoding = "UTF-8";
|
||||
|
||||
out->message = logmsg_reencode(commit, NULL, git_commit_encoding);
|
||||
out->message = logmsg_reencode(commit, NULL, get_commit_output_encoding());
|
||||
abbrev = find_unique_abbrev(commit->object.oid.hash, DEFAULT_ABBREV);
|
||||
abbrev_len = strlen(abbrev);
|
||||
|
||||
subject_len = find_commit_subject(out->message, &subject);
|
||||
|
||||
out->parent_label = xmalloc(strlen("parent of ") + abbrev_len +
|
||||
strlen("... ") + subject_len + 1);
|
||||
q = out->parent_label;
|
||||
q = mempcpy(q, "parent of ", strlen("parent of "));
|
||||
out->label = q;
|
||||
q = mempcpy(q, abbrev, abbrev_len);
|
||||
q = mempcpy(q, "... ", strlen("... "));
|
||||
out->subject = q;
|
||||
q = mempcpy(q, subject, subject_len);
|
||||
*q = '\0';
|
||||
out->subject = xmemdupz(subject, subject_len);
|
||||
out->label = xstrfmt("%s... %s", abbrev, out->subject);
|
||||
out->parent_label = xstrfmt("parent of %s", out->label);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void free_message(struct commit *commit, struct commit_message *msg)
|
||||
{
|
||||
free(msg->parent_label);
|
||||
free(msg->label);
|
||||
free(msg->subject);
|
||||
unuse_commit_buffer(commit, msg->message);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user