This patch series fixes the handling of empty packed-refs snapshots (i.e., those with `snapshot->buf` and friends equal to `NULL`), partly by changing `snapshot` to store a pointer to the start of the post-header `packed-refs` content instead of `header_len`. It makes a couple of other improvements as well. I'm not sure whether I like this approach better than the alternative of always setting `snapshot->buf` to a non-NULL value, by allocating a length-1 bit of RAM if necessary. The latter is less intrusive, though even if that approach is taken, I think patches 01, 02, and 04 from this patch series would be worthwhile improvements. Michael Kim Gybels (1): packed_ref_cache: don't use mmap() for small files Michael Haggerty (5): struct snapshot: store `start` rather than `header_len` create_snapshot(): use `xmemdupz()` rather than a strbuf find_reference_location(): make function safe for empty snapshots packed_ref_iterator_begin(): make optimization more general load_contents(): don't try to mmap an empty file refs/packed-backend.c | 106 ++++++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 51 deletions(-) -- 2.14.2