Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 cache.h     | 2 +-
 sha1_file.c | 3 +--
 streaming.c | 9 ++++++++-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/cache.h b/cache.h
index 20c2d6d..5028ded 100644
--- a/cache.h
+++ b/cache.h
@@ -1168,7 +1168,7 @@ struct object_info {
                struct {
                        struct packed_git *pack;
                        off_t offset;
-                       unsigned int is_delta;
+                       unsigned int real_type;
                } packed;
        } u;
 };
diff --git a/sha1_file.c b/sha1_file.c
index ef6ecc8..5848008 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2557,8 +2557,7 @@ int sha1_object_info_extended(const unsigned char *sha1, 
struct object_info *oi)
                oi->whence = OI_PACKED;
                oi->u.packed.offset = e.offset;
                oi->u.packed.pack = e.p;
-               oi->u.packed.is_delta = (rtype == OBJ_REF_DELTA ||
-                                        rtype == OBJ_OFS_DELTA);
+               oi->u.packed.real_type = rtype;
        }
 
        return 0;
diff --git a/streaming.c b/streaming.c
index c7edebb..2cc4c03 100644
--- a/streaming.c
+++ b/streaming.c
@@ -104,6 +104,12 @@ ssize_t read_istream(struct git_istream *st, void *buf, 
size_t sz)
        return st->vtbl->read(st, buf, sz);
 }
 
+static int is_canonical(int type)
+{
+       return type != OBJ_COMMIT && type != OBJ_TREE &&
+               type != OBJ_BLOB && type != OBJ_TAG;
+}
+
 static enum input_source istream_source(const unsigned char *sha1,
                                        enum object_type *type,
                                        struct object_info *oi)
@@ -121,7 +127,8 @@ static enum input_source istream_source(const unsigned char 
*sha1,
        case OI_LOOSE:
                return loose;
        case OI_PACKED:
-               if (!oi->u.packed.is_delta && big_file_threshold < size)
+               if (is_canonical(oi->u.packed.real_type) &&
+                   big_file_threshold < size)
                        return pack_non_delta;
                /* fallthru */
        default:
-- 
1.8.2.83.gc99314b

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to