in lib/grit/git-ruby/internal/loose.rb [37:61]
def get_raw_object(buf)
if buf.bytesize < 2
raise LooseObjectError, "object file too small"
end
if legacy_loose_object?(buf)
content = Zlib::Inflate.inflate(buf)
header, content = content.split(/\0/, 2)
if !header || !content
raise LooseObjectError, "invalid object header"
end
type, size = header.split(/ /, 2)
if !%w(blob tree commit tag).include?(type) || size !~ /^\d+$/
raise LooseObjectError, "invalid object header"
end
type = type.to_sym
size = size.to_i
else
type, size, used = unpack_object_header_gently(buf)
content = Zlib::Inflate.inflate(buf[used..-1])
end
raise LooseObjectError, "size mismatch" if content.bytesize != size
return RawObject.new(type, content)
end