Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- read-cache.c | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 deletions(-) diff --git a/read-cache.c b/read-cache.c index a51bba1..2dbf923 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1273,10 +1273,28 @@ static struct cache_entry *create_from_disk(struct ondisk_cache_entry *ondisk) return ce; } +static int read_cache_entries(struct index_state *istate, + const char *mmap, unsigned long src_offset) +{ + const char *buf = mmap + src_offset; + int i; + + for (i = 0; i < istate->cache_nr; i++) { + struct ondisk_cache_entry *disk_ce; + struct cache_entry *ce; + + disk_ce = (struct ondisk_cache_entry *)buf; + ce = create_from_disk(disk_ce); + set_index_entry(istate, i, ce); + buf += ondisk_ce_size(ce); + } + return buf - mmap; +} + /* remember to discard_cache() before reading a different cache! */ int read_index_from(struct index_state *istate, const char *path) { - int fd, i; + int fd; struct stat st; unsigned long src_offset; struct cache_header *hdr; @@ -1319,17 +1337,7 @@ int read_index_from(struct index_state *istate, const char *path) istate->cache = xcalloc(istate->cache_alloc, sizeof(struct cache_entry *)); istate->initialized = 1; - src_offset = sizeof(*hdr); - for (i = 0; i < istate->cache_nr; i++) { - struct ondisk_cache_entry *disk_ce; - struct cache_entry *ce; - - disk_ce = (struct ondisk_cache_entry *)((char *)mmap + src_offset); - ce = create_from_disk(disk_ce); - set_index_entry(istate, i, ce); - - src_offset += ondisk_ce_size(ce); - } + src_offset = read_cache_entries(istate, mmap, sizeof(*hdr)); istate->timestamp.sec = st.st_mtime; istate->timestamp.nsec = ST_MTIME_NSEC(st); -- 1.7.8.36.g69ee2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html