Patrick Steinhardt <ps@xxxxxx> writes: [snip] > @@ -637,7 +639,21 @@ int cmd_describe(int argc, const char **argv, const char *prefix) > strvec_pushv(&args, argv); > else > strvec_push(&args, "HEAD"); > - return cmd_name_rev(args.nr, args.v, prefix); > + > + /* > + * `cmd_name_rev()` modifies the array, so we'd link its > + * contained strings if we didn't do a copy here. > + */ > + ALLOC_ARRAY(argv_copy, args.nr + 1); > + for (size_t i = 0; i < args.nr; i++) > + argv_copy[i] = args.v[i]; > + argv_copy[args.nr] = NULL; Eventhough we pass `args.nr`, we still set the last element to NULL. This replicates what strvec does and makes it more robust. Nice. > + ret = cmd_name_rev(args.nr, argv_copy, prefix); > + > + strvec_clear(&args); > + free(argv_copy); > + return ret; > } > > hashmap_init(&names, commit_name_neq, NULL, 0); > -- > 2.46.0.rc1.dirty
Attachment:
signature.asc
Description: PGP signature