| 1854 | } |
| 1855 | |
| 1856 | static unsigned long get_size_by_pos(struct bitmap_index *bitmap_git, |
| 1857 | uint32_t pos) |
| 1858 | { |
| 1859 | size_t size; |
| 1860 | struct object_info oi = OBJECT_INFO_INIT; |
| 1861 | |
| 1862 | oi.sizep = &size; |
| 1863 | |
| 1864 | if (pos < bitmap_num_objects_total(bitmap_git)) { |
| 1865 | struct packed_git *pack; |
| 1866 | off_t ofs; |
| 1867 | |
| 1868 | if (bitmap_is_midx(bitmap_git)) { |
| 1869 | uint32_t midx_pos = pack_pos_to_midx(bitmap_git->midx, pos); |
| 1870 | uint32_t pack_id = nth_midxed_pack_int_id(bitmap_git->midx, midx_pos); |
| 1871 | |
| 1872 | pack = nth_midxed_pack(bitmap_git->midx, pack_id); |
| 1873 | ofs = nth_midxed_offset(bitmap_git->midx, midx_pos); |
| 1874 | } else { |
| 1875 | pack = bitmap_git->pack; |
| 1876 | ofs = pack_pos_to_offset(pack, pos); |
| 1877 | } |
| 1878 | |
| 1879 | if (packed_object_info(pack, ofs, &oi) < 0) { |
| 1880 | struct object_id oid; |
| 1881 | nth_bitmap_object_oid(bitmap_git, &oid, |
| 1882 | pack_pos_to_index(pack, pos)); |
| 1883 | die(_("unable to get size of %s"), oid_to_hex(&oid)); |
| 1884 | } |
| 1885 | } else { |
| 1886 | size_t eindex_pos = pos - bitmap_num_objects_total(bitmap_git); |
| 1887 | struct eindex *eindex = &bitmap_git->ext_index; |
| 1888 | struct object *obj = eindex->objects[eindex_pos]; |
| 1889 | if (odb_read_object_info_extended(bitmap_repo(bitmap_git)->objects, &obj->oid, |
| 1890 | &oi, 0) < 0) |
| 1891 | die(_("unable to get size of %s"), oid_to_hex(&obj->oid)); |
| 1892 | } |
| 1893 | |
| 1894 | return cast_size_t_to_ulong(size); |
| 1895 | } |
| 1896 | |
| 1897 | static void filter_bitmap_blob_limit(struct bitmap_index *bitmap_git, |
| 1898 | struct object_list *tip_objects, |
no test coverage detected