Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
object-store: free alt_odb_list
author
Stefan Beller
<sbeller@google.com>
Fri, 23 Mar 2018 17:20:58 +0000
(18:20 +0100)
committer
Junio C Hamano
<gitster@pobox.com>
Fri, 23 Mar 2018 18:06:01 +0000
(11:06 -0700)
Free the memory and reset alt_odb_{list, tail} to NULL.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
object.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
031dc92
)
diff --git
a/object.c
b/object.c
index 6ddd61242c889da42761354ce68e055cbc9b4d78..581347b53553ebba82d50bc8e56208caabf91f22 100644
(file)
--- a/
object.c
+++ b/
object.c
@@
-454,8
+454,30
@@
struct raw_object_store *raw_object_store_new(void)
memset(o, 0, sizeof(*o));
return o;
}
memset(o, 0, sizeof(*o));
return o;
}
+
+static void free_alt_odb(struct alternate_object_database *alt)
+{
+ strbuf_release(&alt->scratch);
+ oid_array_clear(&alt->loose_objects_cache);
+ free(alt);
+}
+
+static void free_alt_odbs(struct raw_object_store *o)
+{
+ while (o->alt_odb_list) {
+ struct alternate_object_database *next;
+
+ next = o->alt_odb_list->next;
+ free_alt_odb(o->alt_odb_list);
+ o->alt_odb_list = next;
+ }
+}
+
void raw_object_store_clear(struct raw_object_store *o)
{
FREE_AND_NULL(o->objectdir);
FREE_AND_NULL(o->alternate_db);
void raw_object_store_clear(struct raw_object_store *o)
{
FREE_AND_NULL(o->objectdir);
FREE_AND_NULL(o->alternate_db);
+
+ free_alt_odbs(o);
+ o->alt_odb_tail = NULL;
}
}