Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
packed_read_raw_ref(): read the reference from the mmapped buffer
author
Michael Haggerty
<mhagger@alum.mit.edu>
Mon, 25 Sep 2017 08:00:13 +0000
(10:00 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 25 Sep 2017 09:02:45 +0000
(18:02 +0900)
Instead of reading the reference from the `ref_cache`, read it
directly from the mmapped buffer.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/packed-backend.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
d1cf155
)
diff --git
a/refs/packed-backend.c
b/refs/packed-backend.c
index abf14a14059cf88b67bc67577e7dd08ad1066dd0..be614e79f530f492d9dc7c6bcf9242ff1a1a712f 100644
(file)
--- a/
refs/packed-backend.c
+++ b/
refs/packed-backend.c
@@
-876,18
+876,22
@@
static int packed_read_raw_ref(struct ref_store *ref_store,
{
struct packed_ref_store *refs =
packed_downcast(ref_store, REF_STORE_READ, "read_raw_ref");
{
struct packed_ref_store *refs =
packed_downcast(ref_store, REF_STORE_READ, "read_raw_ref");
-
-
struct ref_entry *entry
;
+ struct packed_ref_cache *packed_refs = get_packed_ref_cache(refs);
+
const char *rec
;
*type = 0;
*type = 0;
- entry = get_packed_ref(refs, refname);
- if (!entry) {
+ rec = find_reference_location(packed_refs, refname, 1);
+
+ if (!rec) {
+ /* refname is not a packed reference. */
errno = ENOENT;
return -1;
}
errno = ENOENT;
return -1;
}
- hashcpy(sha1, entry->u.value.oid.hash);
+ if (get_sha1_hex(rec, sha1))
+ die_invalid_line(refs->path, rec, packed_refs->eof - rec);
+
*type = REF_ISPACKED;
return 0;
}
*type = REF_ISPACKED;
return 0;
}