diff options
-rw-r--r-- | delta.h | 7 | ||||
-rw-r--r-- | diff-delta.c | 10 |
2 files changed, 17 insertions, 0 deletions
@@ -24,6 +24,13 @@ create_delta_index(const void *buf, unsigned long bufsize); extern void free_delta_index(struct delta_index *index); /* + * sizeof_delta_index: returns memory usage of delta index + * + * Given pointer must be what create_delta_index() returned, or NULL. + */ +extern unsigned long sizeof_delta_index(struct delta_index *index); + +/* * create_delta: create a delta from given index for the given buffer * * This function may be called multiple times with different buffers using diff --git a/diff-delta.c b/diff-delta.c index faf96e4713..3af583536f 100644 --- a/diff-delta.c +++ b/diff-delta.c @@ -119,6 +119,7 @@ struct index_entry { }; struct delta_index { + unsigned long memsize; const void *src_buf; unsigned long src_size; unsigned int hash_mask; @@ -159,6 +160,7 @@ struct delta_index * create_delta_index(const void *buf, unsigned long bufsize) mem = hash + hsize; entry = mem; + index->memsize = memsize; index->src_buf = buf; index->src_size = bufsize; index->hash_mask = hmask; @@ -228,6 +230,14 @@ void free_delta_index(struct delta_index *index) free(index); } +unsigned long sizeof_delta_index(struct delta_index *index) +{ + if (index) + return index->memsize; + else + return 0; +} + /* * The maximum size for any opcode sequence, including the initial header * plus Rabin window plus biggest copy. |