aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--object-file.c13
-rw-r--r--object-file.h7
-rw-r--r--odb.c2
-rw-r--r--odb.h3
4 files changed, 25 insertions, 0 deletions
diff --git a/object-file.c b/object-file.c
index 4675c8ed6b..cd6aa561fa 100644
--- a/object-file.c
+++ b/object-file.c
@@ -1995,3 +1995,16 @@ void object_file_transaction_commit(struct odb_transaction *transaction)
transaction->odb->transaction = NULL;
free(transaction);
}
+
+struct odb_source_loose *odb_source_loose_new(struct odb_source *source)
+{
+ struct odb_source_loose *loose;
+ CALLOC_ARRAY(loose, 1);
+ loose->source = source;
+ return loose;
+}
+
+void odb_source_loose_free(struct odb_source_loose *loose)
+{
+ free(loose);
+}
diff --git a/object-file.h b/object-file.h
index 097e9764be..695a7e8e7c 100644
--- a/object-file.h
+++ b/object-file.h
@@ -18,6 +18,13 @@ int index_path(struct index_state *istate, struct object_id *oid, const char *pa
struct odb_source;
+struct odb_source_loose {
+ struct odb_source *source;
+};
+
+struct odb_source_loose *odb_source_loose_new(struct odb_source *source);
+void odb_source_loose_free(struct odb_source_loose *loose);
+
/*
* Populate and return the loose object cache array corresponding to the
* given object ID.
diff --git a/odb.c b/odb.c
index 77490d7fdb..2d06ab0bb8 100644
--- a/odb.c
+++ b/odb.c
@@ -151,6 +151,7 @@ struct odb_source *odb_source_new(struct object_database *odb,
source->odb = odb;
source->local = local;
source->path = xstrdup(path);
+ source->loose = odb_source_loose_new(source);
return source;
}
@@ -368,6 +369,7 @@ struct odb_source *odb_set_temporary_primary_source(struct object_database *odb,
static void odb_source_free(struct odb_source *source)
{
free(source->path);
+ odb_source_loose_free(source->loose);
odb_clear_loose_cache(source);
loose_object_map_clear(&source->loose_map);
free(source);
diff --git a/odb.h b/odb.h
index 2346ffeca8..49b398beda 100644
--- a/odb.h
+++ b/odb.h
@@ -48,6 +48,9 @@ struct odb_source {
/* Object database that owns this object source. */
struct object_database *odb;
+ /* Private state for loose objects. */
+ struct odb_source_loose *loose;
+
/*
* Used to store the results of readdir(3) calls when we are OK
* sacrificing accuracy due to races for speed. That includes