sha1-file: fix outdated sha1 comment references
[gitweb.git] / sha1-file.c
index 5a272f70de149a2102a1db8f1b3165f3f20da935..c781ae847f042b65aa90bb59e916bbc8adc23f92 100644 (file)
@@ -124,7 +124,7 @@ const char *empty_blob_oid_hex(void)
 
 /*
  * This is meant to hold a *small* number of objects that you would
- * want read_sha1_file() to be able to return, but yet you do not want
+ * want read_object_file() to be able to return, but yet you do not want
  * to write them into the object store (e.g. a browse-only
  * application).
  */
@@ -798,8 +798,8 @@ void *xmmap(void *start, size_t length,
 
 /*
  * With an in-core object data in "map", rehash it to make sure the
- * object name actually matches "sha1" to detect object corruption.
- * With "map" == NULL, try reading the object named with "sha1" using
+ * object name actually matches "oid" to detect object corruption.
+ * With "map" == NULL, try reading the object named with "oid" using
  * the streaming interface and rehash it to do the same.
  */
 int check_object_signature(const struct object_id *oid, void *map,
@@ -924,7 +924,6 @@ static int open_sha1_file(struct repository *r,
 static int quick_has_loose(struct repository *r,
                           const unsigned char *sha1)
 {
-       int subdir_nr = sha1[0];
        struct object_id oid;
        struct object_directory *odb;
 
@@ -932,8 +931,7 @@ static int quick_has_loose(struct repository *r,
 
        prepare_alt_odb(r);
        for (odb = r->objects->odb; odb; odb = odb->next) {
-               odb_load_loose_cache(odb, subdir_nr);
-               if (oid_array_lookup(&odb->loose_objects_cache, &oid) >= 0)
+               if (oid_array_lookup(odb_loose_cache(odb, &oid), &oid) >= 0)
                        return 1;
        }
        return 0;
@@ -2152,8 +2150,10 @@ static int append_loose_object(const struct object_id *oid, const char *path,
        return 0;
 }
 
-void odb_load_loose_cache(struct object_directory *odb, int subdir_nr)
+struct oid_array *odb_loose_cache(struct object_directory *odb,
+                                 const struct object_id *oid)
 {
+       int subdir_nr = oid->hash[0];
        struct strbuf buf = STRBUF_INIT;
 
        if (subdir_nr < 0 ||
@@ -2161,15 +2161,26 @@ void odb_load_loose_cache(struct object_directory *odb, int subdir_nr)
                BUG("subdir_nr out of range");
 
        if (odb->loose_objects_subdir_seen[subdir_nr])
-               return;
+               return &odb->loose_objects_cache[subdir_nr];
 
        strbuf_addstr(&buf, odb->path);
        for_each_file_in_obj_subdir(subdir_nr, &buf,
                                    append_loose_object,
                                    NULL, NULL,
-                                   &odb->loose_objects_cache);
+                                   &odb->loose_objects_cache[subdir_nr]);
        odb->loose_objects_subdir_seen[subdir_nr] = 1;
        strbuf_release(&buf);
+       return &odb->loose_objects_cache[subdir_nr];
+}
+
+void odb_clear_loose_cache(struct object_directory *odb)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(odb->loose_objects_cache); i++)
+               oid_array_clear(&odb->loose_objects_cache[i]);
+       memset(&odb->loose_objects_subdir_seen, 0,
+              sizeof(odb->loose_objects_subdir_seen));
 }
 
 static int check_stream_sha1(git_zstream *stream,