summaryrefslogtreecommitdiff
path: root/notes.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-06-14 08:46:13 -0700
committerJunio C Hamano <gitster@pobox.com>2013-06-14 08:46:14 -0700
commitede63a195c53d31207d694258bd8bc740dbc87a7 (patch)
treee2b1eee737f1b7c3af9590f6b8b2a09962ea7537 /notes.c
parentb27a79d16b21be064c0ac3634928a91e3eee5c01 (diff)
parent4f78c24c63bf0b035afc02372727a3b5897d9835 (diff)
downloadgit-ede63a195c53d31207d694258bd8bc740dbc87a7.tar.gz
Merge branch 'mh/reflife'
Define memory ownership and lifetime rules for what for-each-ref feeds to its callbacks (in short, "you do not own it, so make a copy if you want to keep it"). * mh/reflife: (25 commits) refs: document the lifetime of the args passed to each_ref_fn register_ref(): make a copy of the bad reference SHA-1 exclude_existing(): set existing_refs.strdup_strings string_list_add_refs_by_glob(): add a comment about memory management string_list_add_one_ref(): rename first parameter to "refname" show_head_ref(): rename first parameter to "refname" show_head_ref(): do not shadow name of argument add_existing(): do not retain a reference to sha1 do_fetch(): clean up existing_refs before exiting do_fetch(): reduce scope of peer_item object_array_entry: fix memory handling of the name field find_first_merges(): remove unnecessary code find_first_merges(): initialize merges variable using initializer fsck: don't put a void*-shaped peg in a char*-shaped hole object_array_remove_duplicates(): rewrite to reduce copying revision: use object_array_filter() in implementation of gc_boundary() object_array: add function object_array_filter() revision: split some overly-long lines cmd_diff(): make it obvious which cases are exclusive of each other cmd_diff(): rename local variable "list" -> "entry" ...
Diffstat (limited to 'notes.c')
-rw-r--r--notes.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/notes.c b/notes.c
index f63fd572d6..b69c0b8257 100644
--- a/notes.c
+++ b/notes.c
@@ -918,17 +918,21 @@ out:
return ret;
}
-static int string_list_add_one_ref(const char *path, const unsigned char *sha1,
+static int string_list_add_one_ref(const char *refname, const unsigned char *sha1,
int flag, void *cb)
{
struct string_list *refs = cb;
- if (!unsorted_string_list_has_string(refs, path))
- string_list_append(refs, path);
+ if (!unsorted_string_list_has_string(refs, refname))
+ string_list_append(refs, refname);
return 0;
}
+/*
+ * The list argument must have strdup_strings set on it.
+ */
void string_list_add_refs_by_glob(struct string_list *list, const char *glob)
{
+ assert(list->strdup_strings);
if (has_glob_specials(glob)) {
for_each_glob_ref(string_list_add_one_ref, glob, list);
} else {