mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-13 08:57:56 -05:00
Merge 'objects-larger-than-4gb-on-windows-pt2'
This is hidden in v2.55.0-rc0's own CI because of an omission in5ba82911bc(ci: enable EXPENSIVE for contributor builds, 2026-05-11) which fails to enable EXPENSIVE tests for tags. Due to7d78d5fc1a(ci: skip GitHub workflow runs for already-tested commits/trees, 2020-10-08), the CI of `master` is now also mistakenly green because it reuses the tag's CI run to prove that it's solid. This is an evil merge by necessity because `survey.c` needs to adapt to the changed function signatures. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
committed by
Git for Windows Build Agent
commit
18b5e5975e
8
apply.c
8
apply.c
@@ -3232,7 +3232,7 @@ static int apply_binary_fragment(struct apply_state *state,
|
||||
struct patch *patch)
|
||||
{
|
||||
struct fragment *fragment = patch->fragments;
|
||||
unsigned long len;
|
||||
size_t len;
|
||||
void *dst;
|
||||
|
||||
if (!fragment)
|
||||
@@ -3321,7 +3321,7 @@ static int apply_binary(struct apply_state *state,
|
||||
if (odb_has_object(the_repository->objects, &oid, 0)) {
|
||||
/* We already have the postimage */
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *result;
|
||||
|
||||
result = odb_read_object(the_repository->objects, &oid,
|
||||
@@ -3384,7 +3384,7 @@ static int read_blob_object(struct strbuf *buf, const struct object_id *oid, uns
|
||||
strbuf_addf(buf, "Subproject commit %s\n", oid_to_hex(oid));
|
||||
} else {
|
||||
enum object_type type;
|
||||
unsigned long sz;
|
||||
size_t sz;
|
||||
char *result;
|
||||
|
||||
result = odb_read_object(the_repository->objects, oid,
|
||||
@@ -3611,7 +3611,7 @@ static int load_preimage(struct apply_state *state,
|
||||
|
||||
static int resolve_to(struct image *image, const struct object_id *result_id)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
char *data;
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ static void *object_file_to_archive(const struct archiver_args *args,
|
||||
const struct object_id *oid,
|
||||
unsigned int mode,
|
||||
enum object_type *type,
|
||||
unsigned long *sizep)
|
||||
size_t *sizep)
|
||||
{
|
||||
void *buffer;
|
||||
const struct commit *commit = args->convert ? args->commit : NULL;
|
||||
@@ -158,7 +158,7 @@ static int write_archive_entry(const struct object_id *oid, const char *base,
|
||||
write_archive_entry_fn_t write_entry = c->write_entry;
|
||||
int err;
|
||||
const char *path_without_prefix;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *buffer;
|
||||
enum object_type type;
|
||||
|
||||
|
||||
2
attr.c
2
attr.c
@@ -768,7 +768,7 @@ static struct attr_stack *read_attr_from_blob(struct index_state *istate,
|
||||
const char *path, unsigned flags)
|
||||
{
|
||||
struct object_id oid;
|
||||
unsigned long sz;
|
||||
size_t sz;
|
||||
enum object_type type;
|
||||
void *buf;
|
||||
unsigned short mode;
|
||||
|
||||
2
bisect.c
2
bisect.c
@@ -154,7 +154,7 @@ static void show_list(const char *debug, int counted, int nr,
|
||||
struct commit *commit = p->item;
|
||||
unsigned commit_flags = commit->object.flags;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *buf = odb_read_object(the_repository->objects,
|
||||
&commit->object.oid, &type,
|
||||
&size);
|
||||
|
||||
15
blame.c
15
blame.c
@@ -1041,10 +1041,13 @@ static void fill_origin_blob(struct diff_options *opt,
|
||||
textconv_object(opt->repo, o->path, o->mode,
|
||||
&o->blob_oid, 1, &file->ptr, &file_size))
|
||||
;
|
||||
else
|
||||
else {
|
||||
size_t file_size_st = 0;
|
||||
file->ptr = odb_read_object(the_repository->objects,
|
||||
&o->blob_oid, &type,
|
||||
&file_size);
|
||||
&file_size_st);
|
||||
file_size = cast_size_t_to_ulong(file_size_st);
|
||||
}
|
||||
file->size = file_size;
|
||||
|
||||
if (!file->ptr)
|
||||
@@ -2869,10 +2872,14 @@ void setup_scoreboard(struct blame_scoreboard *sb,
|
||||
textconv_object(sb->repo, sb->path, o->mode, &o->blob_oid, 1, (char **) &sb->final_buf,
|
||||
&sb->final_buf_size))
|
||||
;
|
||||
else
|
||||
else {
|
||||
size_t final_buf_size_st = 0;
|
||||
sb->final_buf = odb_read_object(the_repository->objects,
|
||||
&o->blob_oid, &type,
|
||||
&sb->final_buf_size);
|
||||
&final_buf_size_st);
|
||||
sb->final_buf_size =
|
||||
cast_size_t_to_ulong(final_buf_size_st);
|
||||
}
|
||||
|
||||
if (!sb->final_buf)
|
||||
die(_("cannot read blob %s for path %s"),
|
||||
|
||||
@@ -84,7 +84,7 @@ static char *replace_idents_using_mailmap(char *object_buf, size_t *size)
|
||||
|
||||
static int filter_object(const char *path, unsigned mode,
|
||||
const struct object_id *oid,
|
||||
char **buf, unsigned long *size)
|
||||
char **buf, size_t *size)
|
||||
{
|
||||
enum object_type type;
|
||||
|
||||
@@ -120,7 +120,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
||||
struct object_id oid;
|
||||
enum object_type type;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct object_context obj_context = {0};
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
unsigned flags = OBJECT_INFO_LOOKUP_REPLACE;
|
||||
@@ -166,7 +166,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
||||
if (use_mailmap && (type == OBJ_COMMIT || type == OBJ_TAG)) {
|
||||
size_t s = size;
|
||||
buf = replace_idents_using_mailmap(buf, &s);
|
||||
size = cast_size_t_to_ulong(s);
|
||||
size = s;
|
||||
}
|
||||
|
||||
printf("%"PRIuMAX"\n", (uintmax_t)size);
|
||||
@@ -188,9 +188,15 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
if (textconv_object(the_repository, path, obj_context.mode,
|
||||
&oid, 1, &buf, &size))
|
||||
{
|
||||
unsigned long size_ul = 0;
|
||||
int textconv_ret = textconv_object(the_repository, path,
|
||||
obj_context.mode, &oid, 1,
|
||||
&buf, &size_ul);
|
||||
size = size_ul;
|
||||
if (textconv_ret)
|
||||
break;
|
||||
}
|
||||
/* else fallthrough */
|
||||
|
||||
case 'p':
|
||||
@@ -219,7 +225,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
||||
if (use_mailmap) {
|
||||
size_t s = size;
|
||||
buf = replace_idents_using_mailmap(buf, &s);
|
||||
size = cast_size_t_to_ulong(s);
|
||||
size = s;
|
||||
}
|
||||
|
||||
/* otherwise just spit out the data */
|
||||
@@ -266,7 +272,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
||||
if (use_mailmap) {
|
||||
size_t s = size;
|
||||
buf = replace_idents_using_mailmap(buf, &s);
|
||||
size = cast_size_t_to_ulong(s);
|
||||
size = s;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -288,7 +294,7 @@ cleanup:
|
||||
struct expand_data {
|
||||
struct object_id oid;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
unsigned short mode;
|
||||
off_t disk_size;
|
||||
const char *rest;
|
||||
@@ -404,7 +410,7 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
|
||||
fflush(stdout);
|
||||
if (opt->transform_mode) {
|
||||
char *contents;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
if (!data->rest)
|
||||
die("missing path for '%s'", oid_to_hex(oid));
|
||||
@@ -416,9 +422,12 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
|
||||
oid_to_hex(oid), data->rest);
|
||||
} else if (opt->transform_mode == 'c') {
|
||||
enum object_type type;
|
||||
if (!textconv_object(the_repository,
|
||||
data->rest, 0100644, oid,
|
||||
1, &contents, &size))
|
||||
unsigned long size_ul = 0;
|
||||
if (textconv_object(the_repository,
|
||||
data->rest, 0100644, oid,
|
||||
1, &contents, &size_ul))
|
||||
size = size_ul;
|
||||
else
|
||||
contents = odb_read_object(the_repository->objects,
|
||||
oid, &type, &size);
|
||||
if (!contents)
|
||||
@@ -434,7 +443,7 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
|
||||
}
|
||||
else {
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *contents;
|
||||
|
||||
contents = odb_read_object(the_repository->objects, oid,
|
||||
@@ -445,7 +454,7 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d
|
||||
if (use_mailmap) {
|
||||
size_t s = size;
|
||||
contents = replace_idents_using_mailmap(contents, &s);
|
||||
size = cast_size_t_to_ulong(s);
|
||||
size = s;
|
||||
}
|
||||
|
||||
if (type != data->type)
|
||||
@@ -554,7 +563,7 @@ static void batch_object_write(const char *obj_name,
|
||||
if (!buf)
|
||||
die(_("unable to read %s"), oid_to_hex(&data->oid));
|
||||
buf = replace_idents_using_mailmap(buf, &s);
|
||||
data->size = cast_size_t_to_ulong(s);
|
||||
data->size = s;
|
||||
|
||||
free(buf);
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ static char *get_symlink(struct repository *repo,
|
||||
data = strbuf_detach(&link, NULL);
|
||||
} else {
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
data = odb_read_object(repo->objects, oid, &type, &size);
|
||||
if (!data)
|
||||
die(_("could not read object %s for symlink %s"),
|
||||
|
||||
@@ -317,7 +317,10 @@ static void export_blob(const struct object_id *oid)
|
||||
object = (struct object *)lookup_blob(the_repository, oid);
|
||||
eaten = 0;
|
||||
} else {
|
||||
buf = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
size_t size_st = 0;
|
||||
buf = odb_read_object(the_repository->objects, oid, &type,
|
||||
&size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
if (!buf)
|
||||
die(_("could not read blob %s"), oid_to_hex(oid));
|
||||
if (check_object_signature(the_repository, oid, buf, size,
|
||||
@@ -880,7 +883,7 @@ static char *anonymize_tag(void)
|
||||
|
||||
static void handle_tag(const char *name, struct tag *tag)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
char *buf;
|
||||
const char *tagger, *tagger_end, *message;
|
||||
|
||||
@@ -1241,6 +1241,8 @@ static void *gfi_unpack_entry(
|
||||
unsigned long *sizep)
|
||||
{
|
||||
enum object_type type;
|
||||
size_t size_st = 0;
|
||||
void *data;
|
||||
struct packed_git *p = all_packs[oe->pack_id];
|
||||
if (p == pack_data && p->pack_size < (pack_size + the_hash_algo->rawsz)) {
|
||||
/* The object is stored in the packfile we are writing to
|
||||
@@ -1262,7 +1264,10 @@ static void *gfi_unpack_entry(
|
||||
*/
|
||||
p->pack_size = pack_size + the_hash_algo->rawsz;
|
||||
}
|
||||
return unpack_entry(the_repository, p, oe->idx.offset, &type, sizep);
|
||||
data = unpack_entry(the_repository, p, oe->idx.offset, &type, &size_st);
|
||||
if (sizep)
|
||||
*sizep = cast_size_t_to_ulong(size_st);
|
||||
return data;
|
||||
}
|
||||
|
||||
static void load_tree(struct tree_entry *root)
|
||||
@@ -1288,7 +1293,10 @@ static void load_tree(struct tree_entry *root)
|
||||
die(_("can't load tree %s"), oid_to_hex(oid));
|
||||
} else {
|
||||
enum object_type type;
|
||||
buf = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
size_t size_st = 0;
|
||||
buf = odb_read_object(the_repository->objects, oid, &type,
|
||||
&size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
if (!buf || type != OBJ_TREE)
|
||||
die(_("can't load tree %s"), oid_to_hex(oid));
|
||||
}
|
||||
@@ -2557,7 +2565,7 @@ static void note_change_n(const char *p, struct branch *b, unsigned char *old_fa
|
||||
die(_("mark :%" PRIuMAX " not a commit"), commit_mark);
|
||||
oidcpy(&commit_oid, &commit_oe->idx.oid);
|
||||
} else if (!repo_get_oid(the_repository, p, &commit_oid)) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *buf = odb_read_object_peeled(the_repository->objects,
|
||||
&commit_oid, OBJ_COMMIT, &size,
|
||||
&commit_oid);
|
||||
@@ -2624,10 +2632,12 @@ static void parse_from_existing(struct branch *b)
|
||||
oidclr(&b->branch_tree.versions[1].oid, the_repository->hash_algo);
|
||||
} else {
|
||||
unsigned long size;
|
||||
size_t size_st = 0;
|
||||
char *buf;
|
||||
|
||||
buf = odb_read_object_peeled(the_repository->objects, &b->oid,
|
||||
OBJ_COMMIT, &size, &b->oid);
|
||||
OBJ_COMMIT, &size_st, &b->oid);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
parse_from_commit(b, buf, size);
|
||||
free(buf);
|
||||
}
|
||||
@@ -2719,7 +2729,7 @@ static struct hash_list *parse_merge(unsigned int *count)
|
||||
die(_("mark :%" PRIuMAX " not a commit"), idnum);
|
||||
oidcpy(&n->oid, &oe->idx.oid);
|
||||
} else if (!repo_get_oid(the_repository, from, &n->oid)) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *buf = odb_read_object_peeled(the_repository->objects,
|
||||
&n->oid, OBJ_COMMIT,
|
||||
&size, &n->oid);
|
||||
@@ -3327,7 +3337,10 @@ static void cat_blob(struct object_entry *oe, struct object_id *oid)
|
||||
char *buf;
|
||||
|
||||
if (!oe || oe->pack_id == MAX_PACK_ID) {
|
||||
buf = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
size_t size_st = 0;
|
||||
buf = odb_read_object(the_repository->objects, oid, &type,
|
||||
&size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
} else {
|
||||
type = oe->type;
|
||||
buf = gfi_unpack_entry(oe, &size);
|
||||
@@ -3435,8 +3448,10 @@ static struct object_entry *dereference(struct object_entry *oe,
|
||||
buf = gfi_unpack_entry(oe, &size);
|
||||
} else {
|
||||
enum object_type unused;
|
||||
size_t size_st = 0;
|
||||
buf = odb_read_object(the_repository->objects, oid,
|
||||
&unused, &size);
|
||||
&unused, &size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
}
|
||||
if (!buf)
|
||||
die(_("can't load object %s"), oid_to_hex(oid));
|
||||
|
||||
@@ -724,7 +724,7 @@ static int fsck_loose(const struct object_id *oid, const char *path,
|
||||
struct for_each_loose_cb *data = cb_data;
|
||||
struct object *obj;
|
||||
enum object_type type = OBJ_NONE;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *contents = NULL;
|
||||
int eaten;
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
|
||||
@@ -520,7 +520,7 @@ static int grep_submodule(struct grep_opt *opt,
|
||||
enum object_type object_type;
|
||||
struct tree_desc tree;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct strbuf base = STRBUF_INIT;
|
||||
|
||||
obj_read_lock();
|
||||
@@ -573,7 +573,7 @@ static int grep_cache(struct grep_opt *opt,
|
||||
enum object_type type;
|
||||
struct tree_desc tree;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
data = odb_read_object(the_repository->objects, &ce->oid,
|
||||
&type, &size);
|
||||
@@ -666,7 +666,7 @@ static int grep_tree(struct grep_opt *opt, const struct pathspec *pathspec,
|
||||
enum object_type type;
|
||||
struct tree_desc sub;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
data = odb_read_object(the_repository->objects,
|
||||
&entry.oid, &type, &size);
|
||||
@@ -730,7 +730,7 @@ static void collect_blob_oids_for_tree(struct repository *repo,
|
||||
enum object_type type;
|
||||
struct tree_desc sub_tree;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
data = odb_read_object(repo->objects, &entry.oid,
|
||||
&type, &size);
|
||||
@@ -764,7 +764,7 @@ static void collect_blob_oids_for_treeish(struct grep_opt *opt,
|
||||
{
|
||||
struct tree_desc tree;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct strbuf base = STRBUF_INIT;
|
||||
int len;
|
||||
|
||||
@@ -841,7 +841,7 @@ static int grep_object(struct grep_opt *opt, const struct pathspec *pathspec,
|
||||
if (obj->type == OBJ_COMMIT || obj->type == OBJ_TREE) {
|
||||
struct tree_desc tree;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct strbuf base;
|
||||
int hit, len;
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ struct base_data {
|
||||
/* Not initialized by make_base(). */
|
||||
struct list_head list;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -258,7 +258,7 @@ static unsigned check_object(struct object *obj)
|
||||
return 0;
|
||||
|
||||
if (!(obj->flags & FLAG_CHECKED)) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int type = odb_read_object_info(the_repository->objects,
|
||||
&obj->oid, &size);
|
||||
if (type <= 0)
|
||||
@@ -905,7 +905,7 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
|
||||
if (collision_test_needed) {
|
||||
void *has_data;
|
||||
enum object_type has_type;
|
||||
unsigned long has_size;
|
||||
size_t has_size;
|
||||
read_lock();
|
||||
has_type = odb_read_object_info(the_repository->objects, oid, &has_size);
|
||||
if (has_type < 0)
|
||||
@@ -1048,7 +1048,7 @@ static struct base_data *resolve_delta(struct object_entry *delta_obj,
|
||||
{
|
||||
void *delta_data, *result_data;
|
||||
struct base_data *result;
|
||||
unsigned long result_size;
|
||||
size_t result_size;
|
||||
|
||||
if (show_stat) {
|
||||
int i = delta_obj - objects;
|
||||
@@ -1515,7 +1515,7 @@ static void fix_unresolved_deltas(struct hashfile *f)
|
||||
struct ref_delta_entry *d = sorted_by_pos[i];
|
||||
enum object_type type;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
if (objects[d->obj_no].real_type != OBJ_REF_DELTA)
|
||||
continue;
|
||||
|
||||
@@ -613,7 +613,7 @@ static int show_blob_object(const struct object_id *oid, struct rev_info *rev, c
|
||||
|
||||
static int show_tag_object(const struct object_id *oid, struct rev_info *rev)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
char *buf = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
unsigned long offset = 0;
|
||||
|
||||
@@ -256,7 +256,7 @@ static void expand_objectsize(struct repository *repo, struct strbuf *line,
|
||||
size_t len;
|
||||
|
||||
if (type == OBJ_BLOB) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
if (odb_read_object_info(repo->objects, oid, &size) < 0)
|
||||
die(_("could not get object info about '%s'"),
|
||||
oid_to_hex(oid));
|
||||
|
||||
@@ -32,7 +32,7 @@ static void expand_objectsize(struct strbuf *line, const struct object_id *oid,
|
||||
size_t len;
|
||||
|
||||
if (type == OBJ_BLOB) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
if (odb_read_object_info(the_repository->objects, oid, &size) < 0)
|
||||
die(_("could not get object info about '%s'"),
|
||||
oid_to_hex(oid));
|
||||
@@ -220,7 +220,7 @@ static int show_tree_long(const struct object_id *oid, struct strbuf *base,
|
||||
return early;
|
||||
|
||||
if (type == OBJ_BLOB) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
if (odb_read_object_info(the_repository->objects, oid, &size) == OBJ_BAD)
|
||||
xsnprintf(size_text, sizeof(size_text), "BAD");
|
||||
else
|
||||
|
||||
@@ -69,7 +69,7 @@ static const char *explanation(struct merge_list *entry)
|
||||
return "removed in remote";
|
||||
}
|
||||
|
||||
static void *result(struct merge_list *entry, unsigned long *size)
|
||||
static void *result(struct merge_list *entry, size_t *size)
|
||||
{
|
||||
enum object_type type;
|
||||
struct blob *base, *our, *their;
|
||||
@@ -96,7 +96,7 @@ static void *result(struct merge_list *entry, unsigned long *size)
|
||||
base, our, their, size);
|
||||
}
|
||||
|
||||
static void *origin(struct merge_list *entry, unsigned long *size)
|
||||
static void *origin(struct merge_list *entry, size_t *size)
|
||||
{
|
||||
enum object_type type;
|
||||
while (entry) {
|
||||
@@ -119,7 +119,7 @@ static int show_outf(void *priv UNUSED, mmbuffer_t *mb, int nbuf)
|
||||
|
||||
static void show_diff(struct merge_list *entry)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
mmfile_t src, dst;
|
||||
xpparam_t xpp;
|
||||
xdemitconf_t xecfg;
|
||||
|
||||
@@ -50,7 +50,7 @@ static int verify_object_in_tag(struct object_id *tagged_oid, int *tagged_type)
|
||||
{
|
||||
int ret;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *buffer;
|
||||
const struct object_id *repl;
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ static int list_each_note(const struct object_id *object_oid,
|
||||
|
||||
static void copy_obj_to_fd(int fd, const struct object_id *oid)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
char *buf = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
if (buf) {
|
||||
@@ -313,7 +313,7 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
|
||||
char *value;
|
||||
struct object_id object;
|
||||
enum object_type type;
|
||||
unsigned long len;
|
||||
size_t len;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
|
||||
@@ -721,7 +721,7 @@ static int append_edit(int argc, const char **argv, const char *prefix,
|
||||
|
||||
if (note && !edit) {
|
||||
/* Append buf to previous note contents */
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
char *prev_buf = odb_read_object(the_repository->objects, note, &type, &size);
|
||||
|
||||
@@ -66,8 +66,8 @@ static inline struct object_entry *oe_delta(
|
||||
return &pack->objects[e->delta_idx - 1];
|
||||
}
|
||||
|
||||
static inline unsigned long oe_delta_size(struct packing_data *pack,
|
||||
const struct object_entry *e)
|
||||
static inline size_t oe_delta_size(struct packing_data *pack,
|
||||
const struct object_entry *e)
|
||||
{
|
||||
if (e->delta_size_valid)
|
||||
return e->delta_size_;
|
||||
@@ -83,11 +83,11 @@ static inline unsigned long oe_delta_size(struct packing_data *pack,
|
||||
return pack->delta_size[e - pack->objects];
|
||||
}
|
||||
|
||||
unsigned long oe_get_size_slow(struct packing_data *pack,
|
||||
const struct object_entry *e);
|
||||
size_t oe_get_size_slow(struct packing_data *pack,
|
||||
const struct object_entry *e);
|
||||
|
||||
static inline unsigned long oe_size(struct packing_data *pack,
|
||||
const struct object_entry *e)
|
||||
static inline size_t oe_size(struct packing_data *pack,
|
||||
const struct object_entry *e)
|
||||
{
|
||||
if (e->size_valid)
|
||||
return e->size_;
|
||||
@@ -145,7 +145,7 @@ static inline void oe_set_delta_sibling(struct packing_data *pack,
|
||||
|
||||
static inline void oe_set_size(struct packing_data *pack,
|
||||
struct object_entry *e,
|
||||
unsigned long size)
|
||||
size_t size)
|
||||
{
|
||||
if (size < pack->oe_size_limit) {
|
||||
e->size_ = size;
|
||||
@@ -159,7 +159,7 @@ static inline void oe_set_size(struct packing_data *pack,
|
||||
|
||||
static inline void oe_set_delta_size(struct packing_data *pack,
|
||||
struct object_entry *e,
|
||||
unsigned long size)
|
||||
size_t size)
|
||||
{
|
||||
if (size < pack->oe_delta_size_limit) {
|
||||
e->delta_size_ = size;
|
||||
@@ -356,14 +356,17 @@ static void *get_delta(struct object_entry *entry)
|
||||
unsigned long size, base_size, delta_size;
|
||||
void *buf, *base_buf, *delta_buf;
|
||||
enum object_type type;
|
||||
size_t size_st = 0, base_size_st = 0;
|
||||
|
||||
buf = odb_read_object(the_repository->objects, &entry->idx.oid,
|
||||
&type, &size);
|
||||
&type, &size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
if (!buf)
|
||||
die(_("unable to read %s"), oid_to_hex(&entry->idx.oid));
|
||||
base_buf = odb_read_object(the_repository->objects,
|
||||
&DELTA(entry)->idx.oid, &type,
|
||||
&base_size);
|
||||
&base_size_st);
|
||||
base_size = cast_size_t_to_ulong(base_size_st);
|
||||
if (!base_buf)
|
||||
die("unable to read %s",
|
||||
oid_to_hex(&DELTA(entry)->idx.oid));
|
||||
@@ -455,7 +458,7 @@ static int check_pack_inflate(struct packed_git *p,
|
||||
struct pack_window **w_curs,
|
||||
off_t offset,
|
||||
off_t len,
|
||||
unsigned long expect)
|
||||
size_t expect)
|
||||
{
|
||||
git_zstream stream;
|
||||
unsigned char fakebuf[4096], *in;
|
||||
@@ -498,7 +501,7 @@ static void copy_pack_data(struct hashfile *f,
|
||||
|
||||
static inline int oe_size_greater_than(struct packing_data *pack,
|
||||
const struct object_entry *lhs,
|
||||
unsigned long rhs)
|
||||
size_t rhs)
|
||||
{
|
||||
if (lhs->size_valid)
|
||||
return lhs->size_ > rhs;
|
||||
@@ -530,9 +533,11 @@ static unsigned long write_no_reuse_object(struct hashfile *f, struct object_ent
|
||||
type = st->type;
|
||||
size = st->size;
|
||||
} else {
|
||||
size_t size_st = 0;
|
||||
buf = odb_read_object(the_repository->objects,
|
||||
&entry->idx.oid, &type,
|
||||
&size);
|
||||
&size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
if (!buf)
|
||||
die(_("unable to read %s"),
|
||||
oid_to_hex(&entry->idx.oid));
|
||||
@@ -673,8 +678,7 @@ static off_t write_reuse_object(struct hashfile *f, struct object_entry *entry,
|
||||
datalen -= entry->in_pack_header_size;
|
||||
|
||||
if (!pack_to_stdout && p->index_version == 1 &&
|
||||
check_pack_inflate(p, &w_curs, offset, datalen,
|
||||
cast_size_t_to_ulong(entry_size))) {
|
||||
check_pack_inflate(p, &w_curs, offset, datalen, entry_size)) {
|
||||
error(_("corrupt packed object for %s"),
|
||||
oid_to_hex(&entry->idx.oid));
|
||||
unuse_pack(&w_curs);
|
||||
@@ -1940,6 +1944,7 @@ static struct pbase_tree_cache *pbase_tree_get(const struct object_id *oid)
|
||||
struct pbase_tree_cache *ent, *nent;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size_st = 0;
|
||||
enum object_type type;
|
||||
int neigh;
|
||||
int my_ix = pbase_tree_cache_ix(oid);
|
||||
@@ -1967,7 +1972,8 @@ static struct pbase_tree_cache *pbase_tree_get(const struct object_id *oid)
|
||||
/* Did not find one. Either we got a bogus request or
|
||||
* we need to read and perhaps cache.
|
||||
*/
|
||||
data = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
data = odb_read_object(the_repository->objects, oid, &type, &size_st);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
if (!data)
|
||||
return NULL;
|
||||
if (type != OBJ_TREE) {
|
||||
@@ -2122,13 +2128,15 @@ static void add_preferred_base(struct object_id *oid)
|
||||
struct pbase_tree *it;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size_st = 0;
|
||||
struct object_id tree_oid;
|
||||
|
||||
if (window <= num_preferred_base++)
|
||||
return;
|
||||
|
||||
data = odb_read_object_peeled(the_repository->objects, oid,
|
||||
OBJ_TREE, &size, &tree_oid);
|
||||
OBJ_TREE, &size_st, &tree_oid);
|
||||
size = cast_size_t_to_ulong(size_st);
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
@@ -2240,7 +2248,7 @@ static void prefetch_to_pack(uint32_t object_index_start) {
|
||||
|
||||
static void check_object(struct object_entry *entry, uint32_t object_index)
|
||||
{
|
||||
unsigned long canonical_size;
|
||||
size_t canonical_size;
|
||||
enum object_type type;
|
||||
struct object_info oi = {.typep = &type, .sizep = &canonical_size};
|
||||
|
||||
@@ -2282,7 +2290,7 @@ static void check_object(struct object_entry *entry, uint32_t object_index)
|
||||
default:
|
||||
/* Not a delta hence we've already got all we need. */
|
||||
oe_set_type(entry, entry->in_pack_type);
|
||||
SET_SIZE(entry, cast_size_t_to_ulong(in_pack_size));
|
||||
SET_SIZE(entry, in_pack_size);
|
||||
entry->in_pack_header_size = used;
|
||||
if (oe_type(entry) < OBJ_COMMIT || oe_type(entry) > OBJ_BLOB)
|
||||
goto give_up;
|
||||
@@ -2336,8 +2344,8 @@ static void check_object(struct object_entry *entry, uint32_t object_index)
|
||||
if (have_base &&
|
||||
can_reuse_delta(&base_ref, entry, &base_entry)) {
|
||||
oe_set_type(entry, entry->in_pack_type);
|
||||
SET_SIZE(entry, cast_size_t_to_ulong(in_pack_size)); /* delta size */
|
||||
SET_DELTA_SIZE(entry, cast_size_t_to_ulong(in_pack_size));
|
||||
SET_SIZE(entry, in_pack_size); /* delta size */
|
||||
SET_DELTA_SIZE(entry, in_pack_size);
|
||||
|
||||
if (base_entry) {
|
||||
SET_DELTA(entry, base_entry);
|
||||
@@ -2360,7 +2368,8 @@ static void check_object(struct object_entry *entry, uint32_t object_index)
|
||||
* object size from the delta header.
|
||||
*/
|
||||
delta_pos = entry->in_pack_offset + entry->in_pack_header_size;
|
||||
canonical_size = get_size_from_delta(p, &w_curs, delta_pos);
|
||||
canonical_size = get_size_from_delta(p, &w_curs,
|
||||
delta_pos);
|
||||
if (canonical_size == 0)
|
||||
goto give_up;
|
||||
SET_SIZE(entry, canonical_size);
|
||||
@@ -2438,7 +2447,7 @@ static void drop_reused_delta(struct object_entry *entry)
|
||||
unsigned *idx = &to_pack.objects[entry->delta_idx - 1].delta_child_idx;
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
while (*idx) {
|
||||
struct object_entry *oe = &to_pack.objects[*idx - 1];
|
||||
@@ -2716,7 +2725,7 @@ static pthread_mutex_t progress_mutex;
|
||||
|
||||
static inline int oe_size_less_than(struct packing_data *pack,
|
||||
const struct object_entry *lhs,
|
||||
unsigned long rhs)
|
||||
size_t rhs)
|
||||
{
|
||||
if (lhs->size_valid)
|
||||
return lhs->size_ < rhs;
|
||||
@@ -2739,8 +2748,8 @@ static inline void oe_set_tree_depth(struct packing_data *pack,
|
||||
* reconstruction (so non-deltas are true object sizes, but deltas
|
||||
* return the size of the delta data).
|
||||
*/
|
||||
unsigned long oe_get_size_slow(struct packing_data *pack,
|
||||
const struct object_entry *e)
|
||||
size_t oe_get_size_slow(struct packing_data *pack,
|
||||
const struct object_entry *e)
|
||||
{
|
||||
struct packed_git *p;
|
||||
struct pack_window *w_curs;
|
||||
@@ -2750,7 +2759,7 @@ unsigned long oe_get_size_slow(struct packing_data *pack,
|
||||
size_t size;
|
||||
|
||||
if (e->type_ != OBJ_OFS_DELTA && e->type_ != OBJ_REF_DELTA) {
|
||||
unsigned long sz;
|
||||
size_t sz;
|
||||
packing_data_lock(&to_pack);
|
||||
if (odb_read_object_info(the_repository->objects,
|
||||
&e->idx.oid, &sz) < 0)
|
||||
@@ -2774,7 +2783,7 @@ unsigned long oe_get_size_slow(struct packing_data *pack,
|
||||
|
||||
unuse_pack(&w_curs);
|
||||
packing_data_unlock(&to_pack);
|
||||
return cast_size_t_to_ulong(size);
|
||||
return size;
|
||||
}
|
||||
|
||||
static int try_delta(struct unpacked *trg, struct unpacked *src,
|
||||
@@ -2835,10 +2844,12 @@ static int try_delta(struct unpacked *trg, struct unpacked *src,
|
||||
|
||||
/* Load data if not already done */
|
||||
if (!trg->data) {
|
||||
size_t sz_st = 0;
|
||||
packing_data_lock(&to_pack);
|
||||
trg->data = odb_read_object(the_repository->objects,
|
||||
&trg_entry->idx.oid, &type,
|
||||
&sz);
|
||||
&sz_st);
|
||||
sz = cast_size_t_to_ulong(sz_st);
|
||||
packing_data_unlock(&to_pack);
|
||||
if (!trg->data)
|
||||
die(_("object %s cannot be read"),
|
||||
@@ -2850,10 +2861,12 @@ static int try_delta(struct unpacked *trg, struct unpacked *src,
|
||||
*mem_usage += sz;
|
||||
}
|
||||
if (!src->data) {
|
||||
size_t sz_st = 0;
|
||||
packing_data_lock(&to_pack);
|
||||
src->data = odb_read_object(the_repository->objects,
|
||||
&src_entry->idx.oid, &type,
|
||||
&sz);
|
||||
&sz_st);
|
||||
sz = cast_size_t_to_ulong(sz_st);
|
||||
packing_data_unlock(&to_pack);
|
||||
if (!src->data) {
|
||||
if (src_entry->preferred_base) {
|
||||
|
||||
@@ -784,13 +784,14 @@ static int count_objects(const char *path UNUSED, struct oid_array *oids,
|
||||
for (size_t i = 0; i < oids->nr; i++) {
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
unsigned long inflated;
|
||||
size_t inflated_st = 0;
|
||||
struct commit *commit;
|
||||
struct object *obj;
|
||||
void *content;
|
||||
off_t disk;
|
||||
int eaten;
|
||||
|
||||
oi.sizep = &inflated;
|
||||
oi.sizep = &inflated_st;
|
||||
oi.disk_sizep = &disk;
|
||||
oi.contentp = &content;
|
||||
|
||||
@@ -798,6 +799,7 @@ static int count_objects(const char *path UNUSED, struct oid_array *oids,
|
||||
OBJECT_INFO_SKIP_FETCH_OBJECT |
|
||||
OBJECT_INFO_QUICK) < 0)
|
||||
continue;
|
||||
inflated = cast_size_t_to_ulong(inflated_st);
|
||||
|
||||
obj = parse_object_buffer(the_repository, &oids->oid[i], type,
|
||||
inflated, content, &eaten);
|
||||
|
||||
@@ -238,7 +238,7 @@ static int git_tag_config(const char *var, const char *value,
|
||||
|
||||
static void write_tag_body(int fd, const struct object_id *oid)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
char *buf, *sp, *orig;
|
||||
struct strbuf payload = STRBUF_INIT;
|
||||
@@ -388,7 +388,7 @@ static void create_reflog_msg(const struct object_id *oid, struct strbuf *sb)
|
||||
enum object_type type;
|
||||
struct commit *c;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int subject_len = 0;
|
||||
const char *subject_start;
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ static char *create_temp_file(struct object_id *oid)
|
||||
static char path[50];
|
||||
void *buf;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int fd;
|
||||
|
||||
buf = odb_read_object(the_repository->objects, oid, &type, &size);
|
||||
|
||||
@@ -231,7 +231,7 @@ static int check_object(struct object *obj, enum object_type type,
|
||||
die("object type mismatch");
|
||||
|
||||
if (!(obj->flags & FLAG_OPEN)) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int type = odb_read_object_info(the_repository->objects, &obj->oid, &size);
|
||||
if (type != obj->type || type <= 0)
|
||||
die("object of unexpected type");
|
||||
@@ -314,7 +314,7 @@ static void resolve_delta(unsigned nr, enum object_type type,
|
||||
void *delta, unsigned long delta_size)
|
||||
{
|
||||
void *result;
|
||||
unsigned long result_size;
|
||||
size_t result_size;
|
||||
|
||||
result = patch_delta(base, base_size,
|
||||
delta, delta_size,
|
||||
@@ -436,6 +436,7 @@ static void unpack_delta_entry(enum object_type type, unsigned long delta_size,
|
||||
{
|
||||
void *delta_data, *base;
|
||||
unsigned long base_size;
|
||||
size_t base_size_st = 0;
|
||||
struct object_id base_oid;
|
||||
|
||||
if (type == OBJ_REF_DELTA) {
|
||||
@@ -512,7 +513,8 @@ static void unpack_delta_entry(enum object_type type, unsigned long delta_size,
|
||||
return;
|
||||
|
||||
base = odb_read_object(the_repository->objects, &base_oid,
|
||||
&type, &base_size);
|
||||
&type, &base_size_st);
|
||||
base_size = cast_size_t_to_ulong(base_size_st);
|
||||
if (!base) {
|
||||
error("failed to read delta-pack base object %s",
|
||||
oid_to_hex(&base_oid));
|
||||
|
||||
2
bundle.c
2
bundle.c
@@ -296,7 +296,7 @@ int list_bundle_refs(struct bundle_header *header, int argc, const char **argv)
|
||||
|
||||
static int is_tag_in_date_range(struct object *tag, struct rev_info *revs)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
char *buf = NULL, *line, *lineend;
|
||||
timestamp_t date;
|
||||
|
||||
@@ -325,7 +325,9 @@ static char *grab_blob(struct repository *r,
|
||||
*size = fill_textconv(r, textconv, df, &blob);
|
||||
free_filespec(df);
|
||||
} else {
|
||||
blob = odb_read_object(r->objects, oid, &type, size);
|
||||
size_t size_st = 0;
|
||||
blob = odb_read_object(r->objects, oid, &type, &size_st);
|
||||
*size = cast_size_t_to_ulong(size_st);
|
||||
if (!blob)
|
||||
die(_("unable to read %s"), oid_to_hex(oid));
|
||||
if (type != OBJ_BLOB)
|
||||
|
||||
10
commit.c
10
commit.c
@@ -395,7 +395,7 @@ const void *repo_get_commit_buffer(struct repository *r,
|
||||
const void *ret = get_cached_commit_buffer(r, commit, sizep);
|
||||
if (!ret) {
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
ret = odb_read_object(r->objects, &commit->object.oid, &type, &size);
|
||||
if (!ret)
|
||||
die("cannot read commit object %s",
|
||||
@@ -404,7 +404,7 @@ const void *repo_get_commit_buffer(struct repository *r,
|
||||
die("expected commit for %s, got %s",
|
||||
oid_to_hex(&commit->object.oid), type_name(type));
|
||||
if (sizep)
|
||||
*sizep = size;
|
||||
*sizep = cast_size_t_to_ulong(size);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -437,7 +437,7 @@ static inline void set_commit_tree(struct commit *c, struct tree *t)
|
||||
static void load_tree_from_commit_contents(struct repository *r, struct commit *commit)
|
||||
{
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *buf;
|
||||
const char *p;
|
||||
struct object_id tree_oid;
|
||||
@@ -604,7 +604,7 @@ int repo_parse_commit_internal(struct repository *r,
|
||||
{
|
||||
enum object_type type;
|
||||
void *buffer;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct object_info oi = {
|
||||
.typep = &type,
|
||||
.sizep = &size,
|
||||
@@ -1300,7 +1300,7 @@ static void handle_signed_tag(const struct commit *parent, struct commit_extra_h
|
||||
struct merge_remote_desc *desc;
|
||||
struct commit_extra_header *mergetag;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
struct strbuf payload = STRBUF_INIT;
|
||||
struct strbuf signature = STRBUF_INIT;
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#define __attribute__(x)
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#define ftruncate _chsize
|
||||
#define strtoull _strtoui64
|
||||
#define strtoll _strtoi64
|
||||
|
||||
@@ -30,4 +29,27 @@ typedef int sigset_t;
|
||||
|
||||
#include "mingw-posix.h"
|
||||
|
||||
/*
|
||||
* MSVC's `_chsize()` takes a 32-bit `long` and silently truncates files
|
||||
* to 2 GiB. `_chsize_s()` accepts a 64-bit length but returns 0 on
|
||||
* success or an errno value on failure, rather than the -1/errno
|
||||
* convention POSIX `ftruncate()` callers expect. Wrap it so callers
|
||||
* that test the return value as `< 0` or against `-1` keep working.
|
||||
*
|
||||
* Note: this declaration must follow `#include "mingw-posix.h"` so
|
||||
* `off_t` resolves to `off64_t` and the parameter type matches the
|
||||
* underlying `_chsize_s()` width.
|
||||
*/
|
||||
static inline int msvc_ftruncate(int fd, off_t length)
|
||||
{
|
||||
int err = _chsize_s(fd, length);
|
||||
|
||||
if (err) {
|
||||
errno = err;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#define ftruncate msvc_ftruncate
|
||||
|
||||
#endif /* COMPAT_MSVC_POSIX_H */
|
||||
|
||||
2
config.c
2
config.c
@@ -1462,7 +1462,7 @@ int git_config_from_blob_oid(config_fn_t fn,
|
||||
{
|
||||
enum object_type type;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int ret;
|
||||
|
||||
buf = odb_read_object(repo->objects, oid, &type, &size);
|
||||
|
||||
20
delta.h
20
delta.h
@@ -75,9 +75,9 @@ diff_delta(const void *src_buf, unsigned long src_bufsize,
|
||||
* *trg_bufsize is updated with its size. On failure a NULL pointer is
|
||||
* returned. The returned buffer must be freed by the caller.
|
||||
*/
|
||||
void *patch_delta(const void *src_buf, unsigned long src_size,
|
||||
const void *delta_buf, unsigned long delta_size,
|
||||
unsigned long *dst_size);
|
||||
void *patch_delta(const void *src_buf, size_t src_size,
|
||||
const void *delta_buf, size_t delta_size,
|
||||
size_t *dst_size);
|
||||
|
||||
/* the smallest possible delta size is 4 bytes */
|
||||
#define DELTA_SIZE_MIN 4
|
||||
@@ -86,11 +86,8 @@ void *patch_delta(const void *src_buf, unsigned long src_size,
|
||||
* This must be called twice on the delta data buffer, first to get the
|
||||
* expected source buffer size, and again to get the target buffer size.
|
||||
*/
|
||||
/*
|
||||
* Size_t variant that doesn't truncate - use for >4GB objects on Windows.
|
||||
*/
|
||||
static inline size_t get_delta_hdr_size_sz(const unsigned char **datap,
|
||||
const unsigned char *top)
|
||||
static inline size_t get_delta_hdr_size(const unsigned char **datap,
|
||||
const unsigned char *top)
|
||||
{
|
||||
const unsigned char *data = *datap;
|
||||
size_t cmd, size = 0;
|
||||
@@ -104,11 +101,4 @@ static inline size_t get_delta_hdr_size_sz(const unsigned char **datap,
|
||||
return size;
|
||||
}
|
||||
|
||||
static inline unsigned long get_delta_hdr_size(const unsigned char **datap,
|
||||
const unsigned char *top)
|
||||
{
|
||||
size_t size = get_delta_hdr_size_sz(datap, top);
|
||||
return cast_size_t_to_ulong(size);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
5
diff.c
5
diff.c
@@ -4595,8 +4595,9 @@ int diff_populate_filespec(struct repository *r,
|
||||
}
|
||||
}
|
||||
else {
|
||||
size_t size_st = 0;
|
||||
struct object_info info = {
|
||||
.sizep = &s->size
|
||||
.sizep = &size_st
|
||||
};
|
||||
|
||||
if (!(size_only || check_binary))
|
||||
@@ -4618,6 +4619,7 @@ int diff_populate_filespec(struct repository *r,
|
||||
die("unable to read %s", oid_to_hex(&s->oid));
|
||||
|
||||
object_read:
|
||||
s->size = cast_size_t_to_ulong(size_st);
|
||||
if (size_only || check_binary) {
|
||||
if (size_only)
|
||||
return 0;
|
||||
@@ -4632,6 +4634,7 @@ object_read:
|
||||
if (odb_read_object_info_extended(r->objects, &s->oid, &info,
|
||||
OBJECT_INFO_LOOKUP_REPLACE))
|
||||
die("unable to read %s", oid_to_hex(&s->oid));
|
||||
s->size = cast_size_t_to_ulong(size_st);
|
||||
}
|
||||
s->should_free = 1;
|
||||
}
|
||||
|
||||
2
dir.c
2
dir.c
@@ -324,7 +324,7 @@ static int do_read_blob(const struct object_id *oid, struct oid_stat *oid_stat,
|
||||
size_t *size_out, char **data_out)
|
||||
{
|
||||
enum object_type type;
|
||||
unsigned long sz;
|
||||
size_t sz;
|
||||
char *data;
|
||||
|
||||
*size_out = 0;
|
||||
|
||||
4
entry.c
4
entry.c
@@ -105,11 +105,9 @@ static int create_file(const char *path, unsigned int mode)
|
||||
void *read_blob_entry(const struct cache_entry *ce, size_t *size)
|
||||
{
|
||||
enum object_type type;
|
||||
unsigned long ul;
|
||||
void *blob_data = odb_read_object(the_repository->objects, &ce->oid,
|
||||
&type, &ul);
|
||||
&type, size);
|
||||
|
||||
*size = ul;
|
||||
if (blob_data) {
|
||||
if (type == OBJ_BLOB)
|
||||
return blob_data;
|
||||
|
||||
@@ -528,11 +528,11 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
|
||||
for (i = 0; i < origins.nr; i++) {
|
||||
struct object_id *oid = origins.items[i].util;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *buf = odb_read_object(the_repository->objects, oid,
|
||||
&type, &size);
|
||||
char *origbuf = buf;
|
||||
unsigned long len = size;
|
||||
size_t len = size;
|
||||
struct signature_check sigc = { NULL };
|
||||
struct strbuf payload = STRBUF_INIT, sig = STRBUF_INIT;
|
||||
|
||||
|
||||
2
fsck.c
2
fsck.c
@@ -1328,7 +1328,7 @@ static int fsck_blobs(struct oidset *blobs_found, struct oidset *blobs_done,
|
||||
oidset_iter_init(blobs_found, &iter);
|
||||
while ((oid = oidset_iter_next(&iter))) {
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
char *buf;
|
||||
|
||||
if (oidset_contains(blobs_done, oid))
|
||||
|
||||
4
grep.c
4
grep.c
@@ -1933,9 +1933,11 @@ void grep_source_clear_data(struct grep_source *gs)
|
||||
static int grep_source_load_oid(struct grep_source *gs)
|
||||
{
|
||||
enum object_type type;
|
||||
size_t size_st = 0;
|
||||
|
||||
gs->buf = odb_read_object(gs->repo->objects, gs->identifier,
|
||||
&type, &gs->size);
|
||||
&type, &size_st);
|
||||
gs->size = cast_size_t_to_ulong(size_st);
|
||||
if (!gs->buf)
|
||||
return error(_("'%s': unable to read %s"),
|
||||
gs->name,
|
||||
|
||||
@@ -365,7 +365,7 @@ static void start_put(struct transfer_request *request)
|
||||
enum object_type type;
|
||||
char hdr[50];
|
||||
void *unpacked;
|
||||
unsigned long len;
|
||||
size_t len;
|
||||
int hdrlen;
|
||||
ssize_t size;
|
||||
git_zstream stream;
|
||||
|
||||
@@ -280,7 +280,7 @@ static enum list_objects_filter_result filter_blobs_limit(
|
||||
void *filter_data_)
|
||||
{
|
||||
struct filter_blobs_limit_data *filter_data = filter_data_;
|
||||
unsigned long object_length;
|
||||
size_t object_length;
|
||||
enum object_type t;
|
||||
|
||||
switch (filter_situation) {
|
||||
|
||||
@@ -186,7 +186,7 @@ int read_mailmap_blob(struct repository *repo, struct string_list *map,
|
||||
{
|
||||
struct object_id oid;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
|
||||
if (!name)
|
||||
|
||||
@@ -61,7 +61,7 @@ static void *fill_tree_desc_strict(struct repository *r,
|
||||
{
|
||||
void *buffer;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
buffer = odb_read_object(r->objects, hash, &type, &size);
|
||||
if (!buffer)
|
||||
@@ -186,7 +186,7 @@ static int splice_tree(struct repository *r,
|
||||
char *subpath;
|
||||
int toplen;
|
||||
char *buf;
|
||||
unsigned long sz;
|
||||
size_t sz;
|
||||
struct tree_desc desc;
|
||||
unsigned char *rewrite_here;
|
||||
const struct object_id *rewrite_with;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
static int fill_mmfile_blob(mmfile_t *f, struct blob *obj)
|
||||
{
|
||||
void *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
|
||||
buf = odb_read_object(the_repository->objects, &obj->object.oid,
|
||||
@@ -35,7 +35,7 @@ static void *three_way_filemerge(struct index_state *istate,
|
||||
mmfile_t *base,
|
||||
mmfile_t *our,
|
||||
mmfile_t *their,
|
||||
unsigned long *size)
|
||||
size_t *size)
|
||||
{
|
||||
enum ll_merge_result merge_status;
|
||||
mmbuffer_t res;
|
||||
@@ -61,7 +61,7 @@ static void *three_way_filemerge(struct index_state *istate,
|
||||
|
||||
void *merge_blobs(struct index_state *istate, const char *path,
|
||||
struct blob *base, struct blob *our,
|
||||
struct blob *their, unsigned long *size)
|
||||
struct blob *their, size_t *size)
|
||||
{
|
||||
void *res = NULL;
|
||||
mmfile_t f1, f2, common;
|
||||
|
||||
@@ -6,6 +6,6 @@ struct index_state;
|
||||
|
||||
void *merge_blobs(struct index_state *, const char *,
|
||||
struct blob *, struct blob *,
|
||||
struct blob *, unsigned long *);
|
||||
struct blob *, size_t *);
|
||||
|
||||
#endif /* MERGE_BLOBS_H */
|
||||
|
||||
@@ -3716,7 +3716,7 @@ static int read_oid_strbuf(struct merge_options *opt,
|
||||
{
|
||||
void *buf;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
buf = odb_read_object(opt->repo->objects, oid, &type, &size);
|
||||
if (!buf) {
|
||||
path_msg(opt, ERROR_OBJECT_READ_FAILED, 0,
|
||||
|
||||
@@ -82,7 +82,7 @@ char *notes_cache_get(struct notes_cache *c, struct object_id *key_oid,
|
||||
const struct object_id *value_oid;
|
||||
enum object_type type;
|
||||
char *value;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
value_oid = get_note(&c->tree, key_oid);
|
||||
if (!value_oid)
|
||||
|
||||
@@ -339,7 +339,7 @@ static void write_note_to_worktree(const struct object_id *obj,
|
||||
const struct object_id *note)
|
||||
{
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *buf = odb_read_object(the_repository->objects, note, &type, &size);
|
||||
|
||||
if (!buf)
|
||||
|
||||
8
notes.c
8
notes.c
@@ -811,7 +811,8 @@ int combine_notes_concatenate(struct object_id *cur_oid,
|
||||
const struct object_id *new_oid)
|
||||
{
|
||||
char *cur_msg = NULL, *new_msg = NULL, *buf;
|
||||
unsigned long cur_len, new_len, buf_len;
|
||||
unsigned long buf_len;
|
||||
size_t cur_len, new_len;
|
||||
enum object_type cur_type, new_type;
|
||||
int ret;
|
||||
|
||||
@@ -875,7 +876,7 @@ static int string_list_add_note_lines(struct string_list *list,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
char *data;
|
||||
unsigned long len;
|
||||
size_t len;
|
||||
enum object_type t;
|
||||
|
||||
if (is_null_oid(oid))
|
||||
@@ -1282,7 +1283,8 @@ static void format_note(struct notes_tree *t, const struct object_id *object_oid
|
||||
static const char utf8[] = "utf-8";
|
||||
const struct object_id *oid;
|
||||
char *msg, *msg_p;
|
||||
unsigned long linelen, msglen;
|
||||
unsigned long linelen;
|
||||
size_t msglen;
|
||||
enum object_type type;
|
||||
|
||||
if (!t)
|
||||
|
||||
@@ -300,7 +300,7 @@ int parse_loose_header(const char *hdr, struct object_info *oi)
|
||||
}
|
||||
|
||||
if (oi->sizep)
|
||||
*oi->sizep = cast_size_t_to_ulong(size);
|
||||
*oi->sizep = size;
|
||||
|
||||
/*
|
||||
* The length must be followed by a zero byte
|
||||
@@ -932,7 +932,7 @@ int force_object_loose(struct odb_source *source,
|
||||
struct odb_source_files *files = odb_source_files_downcast(source);
|
||||
const struct git_hash_algo *compat = source->odb->repo->compat_hash_algo;
|
||||
void *buf;
|
||||
unsigned long len;
|
||||
size_t len;
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
struct object_id compat_oid;
|
||||
enum object_type type;
|
||||
@@ -1616,7 +1616,7 @@ int read_loose_object(struct repository *repo,
|
||||
unsigned long mapsize;
|
||||
git_zstream stream;
|
||||
char hdr[MAX_HEADER_LEN];
|
||||
unsigned long *size = oi->sizep;
|
||||
size_t *size = oi->sizep;
|
||||
|
||||
fd = git_open(path);
|
||||
if (fd >= 0)
|
||||
|
||||
2
object.c
2
object.c
@@ -325,7 +325,7 @@ struct object *parse_object_with_flags(struct repository *r,
|
||||
{
|
||||
int skip_hash = !!(flags & PARSE_OBJECT_SKIP_HASH_CHECK);
|
||||
int discard_tree = !!(flags & PARSE_OBJECT_DISCARD_TREE);
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
int eaten;
|
||||
const struct object_id *repl = lookup_replace_object(r, oid);
|
||||
|
||||
12
odb.c
12
odb.c
@@ -625,7 +625,7 @@ static int oid_object_info_convert(struct repository *r,
|
||||
enum object_type type;
|
||||
struct object_id oid, delta_base_oid;
|
||||
struct object_info new_oi, *oi;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *content;
|
||||
int ret;
|
||||
|
||||
@@ -716,7 +716,7 @@ int odb_read_object_info_extended(struct object_database *odb,
|
||||
/* returns enum object_type or negative */
|
||||
int odb_read_object_info(struct object_database *odb,
|
||||
const struct object_id *oid,
|
||||
unsigned long *sizep)
|
||||
size_t *sizep)
|
||||
{
|
||||
enum object_type type;
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
@@ -730,7 +730,7 @@ int odb_read_object_info(struct object_database *odb,
|
||||
}
|
||||
|
||||
int odb_pretend_object(struct object_database *odb,
|
||||
void *buf, unsigned long len, enum object_type type,
|
||||
void *buf, size_t len, enum object_type type,
|
||||
struct object_id *oid)
|
||||
{
|
||||
hash_object_file(odb->repo->hash_algo, buf, len, type, oid);
|
||||
@@ -744,7 +744,7 @@ int odb_pretend_object(struct object_database *odb,
|
||||
void *odb_read_object(struct object_database *odb,
|
||||
const struct object_id *oid,
|
||||
enum object_type *type,
|
||||
unsigned long *size)
|
||||
size_t *size)
|
||||
{
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
unsigned flags = OBJECT_INFO_DIE_IF_CORRUPT | OBJECT_INFO_LOOKUP_REPLACE;
|
||||
@@ -762,12 +762,12 @@ void *odb_read_object(struct object_database *odb,
|
||||
void *odb_read_object_peeled(struct object_database *odb,
|
||||
const struct object_id *oid,
|
||||
enum object_type required_type,
|
||||
unsigned long *size,
|
||||
size_t *size,
|
||||
struct object_id *actual_oid_return)
|
||||
{
|
||||
enum object_type type;
|
||||
void *buffer;
|
||||
unsigned long isize;
|
||||
size_t isize;
|
||||
struct object_id actual_oid;
|
||||
|
||||
oidcpy(&actual_oid, oid);
|
||||
|
||||
10
odb.h
10
odb.h
@@ -228,12 +228,12 @@ struct odb_source *odb_add_to_alternates_memory(struct object_database *odb,
|
||||
void *odb_read_object(struct object_database *odb,
|
||||
const struct object_id *oid,
|
||||
enum object_type *type,
|
||||
unsigned long *size);
|
||||
size_t *size);
|
||||
|
||||
void *odb_read_object_peeled(struct object_database *odb,
|
||||
const struct object_id *oid,
|
||||
enum object_type required_type,
|
||||
unsigned long *size,
|
||||
size_t *size,
|
||||
struct object_id *oid_ret);
|
||||
|
||||
/*
|
||||
@@ -245,13 +245,13 @@ void *odb_read_object_peeled(struct object_database *odb,
|
||||
* that reference it.
|
||||
*/
|
||||
int odb_pretend_object(struct object_database *odb,
|
||||
void *buf, unsigned long len, enum object_type type,
|
||||
void *buf, size_t len, enum object_type type,
|
||||
struct object_id *oid);
|
||||
|
||||
struct object_info {
|
||||
/* Request */
|
||||
enum object_type *typep;
|
||||
unsigned long *sizep;
|
||||
size_t *sizep;
|
||||
off_t *disk_sizep;
|
||||
struct object_id *delta_base_oid;
|
||||
void **contentp;
|
||||
@@ -356,7 +356,7 @@ int odb_read_object_info_extended(struct object_database *odb,
|
||||
*/
|
||||
int odb_read_object_info(struct object_database *odb,
|
||||
const struct object_id *oid,
|
||||
unsigned long *sizep);
|
||||
size_t *sizep);
|
||||
|
||||
enum odb_has_object_flags {
|
||||
/* Retry packed storage after checking packed and loose storage */
|
||||
|
||||
@@ -157,26 +157,15 @@ static int open_istream_incore(struct odb_read_stream **out,
|
||||
.base.read = read_istream_incore,
|
||||
};
|
||||
struct odb_incore_read_stream *st;
|
||||
unsigned long size_ul;
|
||||
int ret;
|
||||
|
||||
oi.typep = &stream.base.type;
|
||||
/*
|
||||
* object_info.sizep is unsigned long* (32-bit on Windows), but
|
||||
* stream.base.size is size_t (64-bit). We use a temporary variable
|
||||
* because the types are incompatible. Note: this path still truncates
|
||||
* for >4GB objects, but large objects should use pack streaming
|
||||
* (packfile_store_read_object_stream) which handles size_t properly.
|
||||
* This incore fallback is only used for small objects or when pack
|
||||
* streaming is unavailable.
|
||||
*/
|
||||
oi.sizep = &size_ul;
|
||||
oi.sizep = &stream.base.size;
|
||||
oi.contentp = (void **)&stream.buf;
|
||||
ret = odb_read_object_info_extended(odb, oid, &oi,
|
||||
OBJECT_INFO_DIE_IF_CORRUPT);
|
||||
if (ret)
|
||||
return ret;
|
||||
stream.base.size = size_ul;
|
||||
|
||||
CALLOC_ARRAY(st, 1);
|
||||
*st = stream;
|
||||
|
||||
@@ -1856,7 +1856,7 @@ static void filter_bitmap_blob_none(struct bitmap_index *bitmap_git,
|
||||
static unsigned long get_size_by_pos(struct bitmap_index *bitmap_git,
|
||||
uint32_t pos)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
|
||||
oi.sizep = &size;
|
||||
@@ -1891,7 +1891,7 @@ static unsigned long get_size_by_pos(struct bitmap_index *bitmap_git,
|
||||
die(_("unable to get size of %s"), oid_to_hex(&obj->oid));
|
||||
}
|
||||
|
||||
return size;
|
||||
return cast_size_t_to_ulong(size);
|
||||
}
|
||||
|
||||
static void filter_bitmap_blob_limit(struct bitmap_index *bitmap_git,
|
||||
|
||||
@@ -143,9 +143,8 @@ static int verify_packfile(struct repository *r,
|
||||
data = NULL;
|
||||
data_valid = 0;
|
||||
} else {
|
||||
unsigned long sz;
|
||||
data = unpack_entry(r, p, entries[i].offset, &type, &sz);
|
||||
size = sz;
|
||||
data = unpack_entry(r, p, entries[i].offset, &type,
|
||||
&size);
|
||||
data_valid = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ struct packing_data {
|
||||
uint32_t index_size;
|
||||
|
||||
unsigned int *in_pack_pos;
|
||||
unsigned long *delta_size;
|
||||
size_t *delta_size;
|
||||
|
||||
/*
|
||||
* Only one of these can be non-NULL and they have different
|
||||
|
||||
54
packfile.c
54
packfile.c
@@ -1164,11 +1164,12 @@ unsigned long unpack_object_header_buffer(const unsigned char *buf,
|
||||
}
|
||||
|
||||
/*
|
||||
* Size_t variant for >4GB delta results on Windows.
|
||||
* Read a delta object's header at curpos in p (already inflated as needed)
|
||||
* and return the size of the result object (the post-application target).
|
||||
*/
|
||||
static size_t get_size_from_delta_sz(struct packed_git *p,
|
||||
struct pack_window **w_curs,
|
||||
off_t curpos)
|
||||
size_t get_size_from_delta(struct packed_git *p,
|
||||
struct pack_window **w_curs,
|
||||
off_t curpos)
|
||||
{
|
||||
const unsigned char *data;
|
||||
unsigned char delta_head[20], *in;
|
||||
@@ -1215,18 +1216,10 @@ static size_t get_size_from_delta_sz(struct packed_git *p,
|
||||
data = delta_head;
|
||||
|
||||
/* ignore base size */
|
||||
get_delta_hdr_size_sz(&data, delta_head+sizeof(delta_head));
|
||||
get_delta_hdr_size(&data, delta_head+sizeof(delta_head));
|
||||
|
||||
/* Read the result size */
|
||||
return get_delta_hdr_size_sz(&data, delta_head+sizeof(delta_head));
|
||||
}
|
||||
|
||||
unsigned long get_size_from_delta(struct packed_git *p,
|
||||
struct pack_window **w_curs,
|
||||
off_t curpos)
|
||||
{
|
||||
size_t size = get_size_from_delta_sz(p, w_curs, curpos);
|
||||
return cast_size_t_to_ulong(size);
|
||||
return get_delta_hdr_size(&data, delta_head+sizeof(delta_head));
|
||||
}
|
||||
|
||||
int unpack_object_header(struct packed_git *p,
|
||||
@@ -1454,7 +1447,7 @@ struct delta_base_cache_entry {
|
||||
struct delta_base_cache_key key;
|
||||
struct list_head lru;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
};
|
||||
|
||||
@@ -1525,7 +1518,7 @@ static void detach_delta_base_cache_entry(struct delta_base_cache_entry *ent)
|
||||
}
|
||||
|
||||
static void *cache_or_unpack_entry(struct repository *r, struct packed_git *p,
|
||||
off_t base_offset, unsigned long *base_size,
|
||||
off_t base_offset, size_t *base_size,
|
||||
enum object_type *type)
|
||||
{
|
||||
struct delta_base_cache_entry *ent;
|
||||
@@ -1558,8 +1551,8 @@ void clear_delta_base_cache(void)
|
||||
}
|
||||
|
||||
static void add_delta_base_cache(struct packed_git *p, off_t base_offset,
|
||||
void *base, unsigned long base_size,
|
||||
unsigned long delta_base_cache_limit,
|
||||
void *base, size_t base_size,
|
||||
size_t delta_base_cache_limit,
|
||||
enum object_type type)
|
||||
{
|
||||
struct delta_base_cache_entry *ent;
|
||||
@@ -1614,8 +1607,8 @@ static int packed_object_info_with_index_pos(struct packed_git *p, off_t obj_off
|
||||
* a "real" type later if the caller is interested.
|
||||
*/
|
||||
if (oi->contentp) {
|
||||
*oi->contentp = cache_or_unpack_entry(p->repo, p, obj_offset, oi->sizep,
|
||||
&type);
|
||||
*oi->contentp = cache_or_unpack_entry(p->repo, p, obj_offset,
|
||||
oi->sizep, &type);
|
||||
if (!*oi->contentp)
|
||||
type = OBJ_BAD;
|
||||
} else if (oi->sizep || oi->typep || oi->delta_base_oid) {
|
||||
@@ -1631,18 +1624,13 @@ static int packed_object_info_with_index_pos(struct packed_git *p, off_t obj_off
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
/*
|
||||
* Use size_t variant to avoid die() on >4GB deltas.
|
||||
* oi->sizep is unsigned long, so truncation may occur,
|
||||
* but streaming code uses its own size_t tracking.
|
||||
*/
|
||||
size = get_size_from_delta_sz(p, &w_curs, tmp_pos);
|
||||
size = get_size_from_delta(p, &w_curs, tmp_pos);
|
||||
if (size == 0) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
*oi->sizep = (unsigned long)size;
|
||||
*oi->sizep = size;
|
||||
}
|
||||
|
||||
if (oi->disk_sizep || (oi->mtimep && p->is_cruft)) {
|
||||
@@ -1735,7 +1723,7 @@ int packed_object_info(struct packed_git *p, off_t obj_offset,
|
||||
static void *unpack_compressed_entry(struct packed_git *p,
|
||||
struct pack_window **w_curs,
|
||||
off_t curpos,
|
||||
unsigned long size)
|
||||
size_t size)
|
||||
{
|
||||
int st;
|
||||
git_zstream stream;
|
||||
@@ -1790,11 +1778,11 @@ int do_check_packed_object_crc;
|
||||
struct unpack_entry_stack_ent {
|
||||
off_t obj_offset;
|
||||
off_t curpos;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
|
||||
enum object_type *final_type, unsigned long *final_size)
|
||||
enum object_type *final_type, size_t *final_size)
|
||||
{
|
||||
struct pack_window *w_curs = NULL;
|
||||
off_t curpos = obj_offset;
|
||||
@@ -1911,7 +1899,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
|
||||
void *delta_data;
|
||||
void *base = data;
|
||||
void *external_base = NULL;
|
||||
unsigned long delta_size, base_size = size;
|
||||
size_t delta_size, base_size = size;
|
||||
int i;
|
||||
off_t base_obj_offset = obj_offset;
|
||||
|
||||
@@ -1964,10 +1952,8 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
|
||||
(uintmax_t)curpos, p->pack_name);
|
||||
data = NULL;
|
||||
} else {
|
||||
unsigned long sz;
|
||||
data = patch_delta(base, base_size, delta_data,
|
||||
delta_size, &sz);
|
||||
size = sz;
|
||||
delta_size, &size);
|
||||
|
||||
/*
|
||||
* We could not apply the delta; warn the user, but
|
||||
|
||||
@@ -455,9 +455,10 @@ off_t nth_packed_object_offset(const struct packed_git *, uint32_t n);
|
||||
off_t find_pack_entry_one(const struct object_id *oid, struct packed_git *);
|
||||
|
||||
int is_pack_valid(struct packed_git *);
|
||||
void *unpack_entry(struct repository *r, struct packed_git *, off_t, enum object_type *, unsigned long *);
|
||||
void *unpack_entry(struct repository *r, struct packed_git *, off_t,
|
||||
enum object_type *, size_t *);
|
||||
unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, size_t *sizep);
|
||||
unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
|
||||
size_t get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
|
||||
int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, size_t *);
|
||||
off_t get_delta_base(struct packed_git *p, struct pack_window **w_curs,
|
||||
off_t *curpos, enum object_type type,
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
#include "git-compat-util.h"
|
||||
#include "delta.h"
|
||||
|
||||
void *patch_delta(const void *src_buf, unsigned long src_size,
|
||||
const void *delta_buf, unsigned long delta_size,
|
||||
unsigned long *dst_size)
|
||||
void *patch_delta(const void *src_buf, size_t src_size,
|
||||
const void *delta_buf, size_t delta_size,
|
||||
size_t *dst_size)
|
||||
{
|
||||
const unsigned char *data, *top;
|
||||
unsigned char *dst_buf, *out, cmd;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
if (delta_size < DELTA_SIZE_MIN)
|
||||
return NULL;
|
||||
|
||||
@@ -368,7 +368,7 @@ static int walk_path(struct path_walk_context *ctx,
|
||||
struct oid_array filtered = OID_ARRAY_INIT;
|
||||
|
||||
for (size_t i = 0; i < list->oids.nr; i++) {
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
if (odb_read_object_info(ctx->repo->objects,
|
||||
&list->oids.oid[i],
|
||||
|
||||
@@ -50,7 +50,7 @@ static void send_info(struct repository *r, struct packet_writer *writer,
|
||||
for_each_string_list_item (item, oid_str_list) {
|
||||
const char *oid_str = item->string;
|
||||
struct object_id oid;
|
||||
unsigned long object_size;
|
||||
size_t object_size;
|
||||
|
||||
if (get_oid_hex_algop(oid_str, &oid, r->hash_algo) < 0) {
|
||||
packet_writer_error(
|
||||
@@ -66,7 +66,8 @@ static void send_info(struct repository *r, struct packet_writer *writer,
|
||||
if (odb_read_object_info(r->objects, &oid, &object_size) < 0) {
|
||||
strbuf_addstr(&send_buffer, " ");
|
||||
} else {
|
||||
strbuf_addf(&send_buffer, " %lu", object_size);
|
||||
strbuf_addf(&send_buffer, " %"PRIuMAX,
|
||||
(uintmax_t)object_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -250,7 +250,7 @@ static int ce_compare_link(const struct cache_entry *ce, size_t expected_size)
|
||||
{
|
||||
int match = -1;
|
||||
void *buffer;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
@@ -3464,7 +3464,7 @@ void *read_blob_data_from_index(struct index_state *istate,
|
||||
const char *path, unsigned long *size)
|
||||
{
|
||||
int pos, len;
|
||||
unsigned long sz;
|
||||
size_t sz;
|
||||
enum object_type type;
|
||||
void *data;
|
||||
|
||||
@@ -3492,7 +3492,7 @@ void *read_blob_data_from_index(struct index_state *istate,
|
||||
return NULL;
|
||||
}
|
||||
if (size)
|
||||
*size = sz;
|
||||
*size = cast_size_t_to_ulong(sz);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ struct ref_trailer_buf {
|
||||
static struct expand_data {
|
||||
struct object_id oid;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
off_t disk_size;
|
||||
struct object_id delta_base_oid;
|
||||
void *content;
|
||||
|
||||
2
reflog.c
2
reflog.c
@@ -154,7 +154,7 @@ static int tree_is_complete(const struct object_id *oid)
|
||||
|
||||
if (!tree->buffer) {
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
void *data = odb_read_object(the_repository->objects, oid,
|
||||
&type, &size);
|
||||
if (!data) {
|
||||
|
||||
2
rerere.c
2
rerere.c
@@ -990,7 +990,7 @@ static int handle_cache(struct index_state *istate,
|
||||
|
||||
while (pos < istate->cache_nr) {
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
ce = istate->cache[pos++];
|
||||
if (ce_namelen(ce) != len || memcmp(ce->name, path, len))
|
||||
|
||||
@@ -694,7 +694,7 @@ static const struct submodule *config_from(struct submodule_cache *cache,
|
||||
enum lookup_type lookup_type)
|
||||
{
|
||||
struct strbuf rev = STRBUF_INIT;
|
||||
unsigned long config_size;
|
||||
size_t config_size;
|
||||
char *config = NULL;
|
||||
struct object_id oid;
|
||||
enum object_type type;
|
||||
|
||||
@@ -21,7 +21,7 @@ int cmd__delta(int argc, const char **argv)
|
||||
int fd;
|
||||
struct strbuf from = STRBUF_INIT, data = STRBUF_INIT;
|
||||
char *out_buf;
|
||||
unsigned long out_size;
|
||||
size_t out_size;
|
||||
|
||||
if (argc != 5 || (strcmp(argv[1], "-d") && strcmp(argv[1], "-p")))
|
||||
usage(usage_str);
|
||||
@@ -31,11 +31,13 @@ int cmd__delta(int argc, const char **argv)
|
||||
if (strbuf_read_file(&data, argv[3], 0) < 0)
|
||||
die_errno("unable to read '%s'", argv[3]);
|
||||
|
||||
if (argv[1][1] == 'd')
|
||||
if (argv[1][1] == 'd') {
|
||||
unsigned long delta_size;
|
||||
out_buf = diff_delta(from.buf, from.len,
|
||||
data.buf, data.len,
|
||||
&out_size, 0);
|
||||
else
|
||||
&delta_size, 0);
|
||||
out_size = delta_size;
|
||||
} else
|
||||
out_buf = patch_delta(from.buf, from.len,
|
||||
data.buf, data.len,
|
||||
&out_size);
|
||||
|
||||
@@ -48,7 +48,8 @@ static void write_ref_delta(struct hashfile *f,
|
||||
struct object_id *base)
|
||||
{
|
||||
unsigned char header[MAX_PACK_OBJECT_HEADER];
|
||||
unsigned long size, base_size, delta_size, compressed_size, hdrlen;
|
||||
unsigned long delta_size, compressed_size, hdrlen;
|
||||
size_t size, base_size;
|
||||
enum object_type type;
|
||||
void *base_buf, *delta_buf;
|
||||
void *buf = odb_read_object(the_repository->objects,
|
||||
|
||||
@@ -17,7 +17,7 @@ static void object_info(const char *gitdir, const char *oid_hex)
|
||||
{
|
||||
struct repository r;
|
||||
struct object_id oid;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct object_info oi = {.sizep = &size};
|
||||
const char *p;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ static void cl_assert_object_info(struct odb_source_inmemory *source,
|
||||
const char *expected_content)
|
||||
{
|
||||
enum object_type actual_type;
|
||||
unsigned long actual_size;
|
||||
size_t actual_size;
|
||||
void *actual_content;
|
||||
struct object_info oi = {
|
||||
.typep = &actual_type,
|
||||
|
||||
4
tag.c
4
tag.c
@@ -49,7 +49,7 @@ int gpg_verify_tag(struct repository *r, const struct object_id *oid,
|
||||
{
|
||||
enum object_type type;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int ret;
|
||||
|
||||
type = odb_read_object_info(r->objects, oid, NULL);
|
||||
@@ -207,7 +207,7 @@ int parse_tag(struct repository *r, struct tag *item)
|
||||
{
|
||||
enum object_type type;
|
||||
void *data;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
int ret;
|
||||
|
||||
if (item->object.parsed)
|
||||
|
||||
10
tree-walk.c
10
tree-walk.c
@@ -87,7 +87,7 @@ void *fill_tree_descriptor(struct repository *r,
|
||||
struct tree_desc *desc,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
unsigned long size = 0;
|
||||
size_t size = 0;
|
||||
void *buf = NULL;
|
||||
|
||||
if (oid) {
|
||||
@@ -610,7 +610,7 @@ int get_tree_entry(struct repository *r,
|
||||
{
|
||||
int retval;
|
||||
void *tree;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
struct object_id root;
|
||||
|
||||
tree = odb_read_object_peeled(r->objects, tree_oid, OBJ_TREE, &size, &root);
|
||||
@@ -682,7 +682,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r,
|
||||
if (!t.buffer) {
|
||||
void *tree;
|
||||
struct object_id root;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
tree = odb_read_object_peeled(r->objects, ¤t_tree_oid,
|
||||
OBJ_TREE, &size, &root);
|
||||
if (!tree)
|
||||
@@ -778,6 +778,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r,
|
||||
} else if (S_ISLNK(*mode)) {
|
||||
/* Follow a symlink */
|
||||
unsigned long link_len;
|
||||
size_t link_len_st = 0;
|
||||
size_t len;
|
||||
char *contents, *contents_start;
|
||||
struct dir_state *parent;
|
||||
@@ -797,7 +798,8 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r,
|
||||
|
||||
contents = odb_read_object(r->objects,
|
||||
¤t_tree_oid, &type,
|
||||
&link_len);
|
||||
&link_len_st);
|
||||
link_len = cast_size_t_to_ulong(link_len_st);
|
||||
|
||||
if (!contents)
|
||||
goto done;
|
||||
|
||||
2
tree.c
2
tree.c
@@ -188,7 +188,7 @@ int repo_parse_tree_gently(struct repository *r, struct tree *item,
|
||||
{
|
||||
enum object_type type;
|
||||
void *buffer;
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
|
||||
if (item->object.parsed)
|
||||
return 0;
|
||||
|
||||
@@ -179,7 +179,7 @@ int read_mmfile(mmfile_t *ptr, const char *filename)
|
||||
void read_mmblob(mmfile_t *ptr, struct object_database *odb,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
unsigned long size;
|
||||
size_t size;
|
||||
enum object_type type;
|
||||
|
||||
if (is_null_oid(oid)) {
|
||||
|
||||
Reference in New Issue
Block a user