diff --git a/attr.c b/attr.c index 243d60ffa9a6a097514ddfeb74c98ae7bb30f35c..09e7e50d3e4e3548187e230ea9bf20398e0959a0 100644 --- a/attr.c +++ b/attr.c @@ -387,7 +387,7 @@ static struct attr_stack *read_attr_from_index(const char *path, int macro_ok) char *buf, *sp; int lineno = 0; - buf = read_blob_data_from_index(use_index ? use_index : &the_index, path); + buf = read_blob_data_from_index(use_index ? use_index : &the_index, path, NULL); if (!buf) return NULL; diff --git a/cache.h b/cache.h index 5d66c74f6aa3ab0c26e62a668d25a94d0d9bfde7..627776b5e6b6fbd74c44935033c36c8811ba3601 100644 --- a/cache.h +++ b/cache.h @@ -307,7 +307,7 @@ extern void free_name_hash(struct index_state *istate); #define resolve_undo_clear() resolve_undo_clear_index(&the_index) #define unmerge_cache_entry_at(at) unmerge_index_entry_at(&the_index, at) #define unmerge_cache(pathspec) unmerge_index(&the_index, pathspec) -#define read_blob_data_from_cache(path) read_blob_data_from_index(&the_index, (path)) +#define read_blob_data_from_cache(path, sz) read_blob_data_from_index(&the_index, (path), (sz)) #endif enum object_type { @@ -453,7 +453,7 @@ extern int add_file_to_index(struct index_state *, const char *path, int flags); extern struct cache_entry *make_cache_entry(unsigned int mode, const unsigned char *sha1, const char *path, int stage, int refresh); extern int ce_same_name(struct cache_entry *a, struct cache_entry *b); extern int index_name_is_other(const struct index_state *, const char *, int); -extern void *read_blob_data_from_index(struct index_state *, const char *); +extern void *read_blob_data_from_index(struct index_state *, const char *, unsigned long *); /* do stat comparison even if CE_VALID is true */ #define CE_MATCH_IGNORE_VALID 01 diff --git a/read-cache.c b/read-cache.c index 48d87e83ed062f566800256560272bbadc6492d7..8c27ed2c66345c0a1538932f57c554fcfe5339a5 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1896,7 +1896,7 @@ int index_name_is_other(const struct index_state *istate, const char *name, return 1; } -void *read_blob_data_from_index(struct index_state *istate, const char *path) +void *read_blob_data_from_index(struct index_state *istate, const char *path, unsigned long *size) { int pos, len; unsigned long sz; @@ -1925,5 +1925,7 @@ void *read_blob_data_from_index(struct index_state *istate, const char *path) free(data); return NULL; } + if (size) + *size = sz; return data; }