Merge branch 'size-t/diff'

This commit is contained in:
Johannes Schindelin
2026-06-07 23:13:54 +02:00
13 changed files with 39 additions and 56 deletions

2
attr.c
View File

@@ -793,7 +793,7 @@ static struct attr_stack *read_attr_from_index(struct index_state *istate,
{
struct attr_stack *stack = NULL;
char *buf;
unsigned long size;
size_t size;
int sparse_dir_pos = -1;
if (!istate)

21
blame.c
View File

@@ -238,7 +238,7 @@ static struct commit *fake_working_tree_commit(struct repository *r,
struct stat st;
const char *read_from;
char *buf_ptr;
unsigned long buf_len;
size_t buf_len;
if (contents_from) {
if (stat(contents_from, &st) < 0)
@@ -1034,20 +1034,17 @@ static void fill_origin_blob(struct diff_options *opt,
{
if (!o->file.ptr) {
enum object_type type;
unsigned long file_size;
size_t file_size;
(*num_read_blob)++;
if (opt->flags.allow_textconv &&
textconv_object(opt->repo, o->path, o->mode,
&o->blob_oid, 1, &file->ptr, &file_size))
;
else {
size_t file_size_st = 0;
else
file->ptr = odb_read_object(the_repository->objects,
&o->blob_oid, &type,
&file_size_st);
file_size = cast_size_t_to_ulong(file_size_st);
}
&file_size);
file->size = file_size;
if (!file->ptr)
@@ -2864,22 +2861,20 @@ void setup_scoreboard(struct blame_scoreboard *sb,
sb->final_buf_size = o->file.size;
}
else {
size_t final_buf_size_st = 0;
o = get_origin(sb->final, sb->path);
if (fill_blob_sha1_and_mode(sb->repo, o))
die(_("no such path %s in %s"), sb->path, final_commit_name);
if (sb->revs->diffopt.flags.allow_textconv &&
textconv_object(sb->repo, sb->path, o->mode, &o->blob_oid, 1, (char **) &sb->final_buf,
&sb->final_buf_size))
&final_buf_size_st))
;
else {
size_t final_buf_size_st = 0;
else
sb->final_buf = odb_read_object(the_repository->objects,
&o->blob_oid, &type,
&final_buf_size_st);
sb->final_buf_size =
cast_size_t_to_ulong(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"),

View File

@@ -186,11 +186,9 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
case 'c':
{
unsigned long size_ul = 0;
int textconv_ret = textconv_object(the_repository, path,
obj_context.mode, &oid, 1,
&buf, &size_ul);
size = size_ul;
&buf, &size);
if (textconv_ret)
break;
}
@@ -413,12 +411,9 @@ 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;
unsigned long size_ul = 0;
if (textconv_object(the_repository,
data->rest, 0100644, oid,
1, &contents, &size_ul))
size = size_ul;
else
if (!textconv_object(the_repository,
data->rest, 0100644, oid,
1, &contents, &size))
contents = odb_read_object(the_repository->objects,
oid, &type, &size);
if (!contents)

View File

@@ -584,7 +584,7 @@ static int show_blob_object(const struct object_id *oid, struct rev_info *rev, c
struct object_id oidc;
struct object_context obj_context = {0};
char *buf;
unsigned long size;
size_t size;
fflush(rev->diffopt.file);
if (!rev->diffopt.flags.textconv_set_via_cmdline ||

View File

@@ -304,7 +304,7 @@ static struct lline *coalesce_lines(struct lline *base, int *lenbase,
static char *grab_blob(struct repository *r,
const struct object_id *oid, unsigned int mode,
unsigned long *size, struct userdiff_driver *textconv,
size_t *size, struct userdiff_driver *textconv,
const char *path)
{
char *blob;
@@ -325,9 +325,7 @@ static char *grab_blob(struct repository *r,
*size = fill_textconv(r, textconv, df, &blob);
free_filespec(df);
} else {
size_t size_st = 0;
blob = odb_read_object(r->objects, oid, &type, &size_st);
*size = cast_size_t_to_ulong(size_st);
blob = odb_read_object(r->objects, oid, &type, size);
if (!blob)
die(_("unable to read %s"), oid_to_hex(oid));
if (type != OBJ_BLOB)
@@ -431,7 +429,7 @@ static void combine_diff(struct repository *r,
xdemitconf_t xecfg;
mmfile_t parent_file;
struct combine_diff_state state;
unsigned long sz;
size_t sz;
if (result_deleted)
return; /* result deleted */
@@ -1015,7 +1013,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
struct rev_info *rev)
{
struct diff_options *opt = &rev->diffopt;
unsigned long result_size, cnt, lno;
size_t result_size, cnt, lno;
int result_deleted = 0;
char *result, *cp;
struct sline *sline; /* survived lines */
@@ -1134,7 +1132,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
is_binary = buffer_is_binary(result, result_size);
for (i = 0; !is_binary && i < num_parent; i++) {
char *buf;
unsigned long size;
size_t size;
buf = grab_blob(opt->repo,
&elem->parent[i].oid,
elem->parent[i].mode,

View File

@@ -102,7 +102,7 @@ static int convert_is_binary(const struct text_stat *stats)
return 0;
}
static unsigned int gather_convert_stats(const char *data, unsigned long size)
static unsigned int gather_convert_stats(const char *data, size_t size)
{
struct text_stat stats;
int ret = 0;
@@ -119,7 +119,7 @@ static unsigned int gather_convert_stats(const char *data, unsigned long size)
return ret;
}
static const char *gather_convert_stats_ascii(const char *data, unsigned long size)
static const char *gather_convert_stats_ascii(const char *data, size_t size)
{
unsigned int convert_stats = gather_convert_stats(data, size);
@@ -141,7 +141,7 @@ const char *get_cached_convert_stats_ascii(struct index_state *istate,
const char *path)
{
const char *ret;
unsigned long sz;
size_t sz;
void *data = read_blob_data_from_index(istate, path, &sz);
ret = gather_convert_stats_ascii(data, sz);
free(data);
@@ -223,7 +223,7 @@ static void check_global_conv_flags_eol(const char *path,
static int has_crlf_in_index(struct index_state *istate, const char *path)
{
unsigned long sz;
size_t sz;
void *data;
const char *crp;
int has_crlf = 0;

23
diff.c
View File

@@ -3606,8 +3606,8 @@ static int checkdiff_consume(void *priv, char *line, unsigned long len)
}
static unsigned char *deflate_it(char *data,
unsigned long size,
unsigned long *result_size)
size_t size,
size_t *result_size)
{
size_t bound;
unsigned char *deflated;
@@ -3636,10 +3636,10 @@ static void emit_binary_diff_body(struct diff_options *o,
void *delta;
void *deflated;
void *data;
unsigned long orig_size;
unsigned long delta_size;
unsigned long deflate_size;
unsigned long data_size;
size_t orig_size;
size_t delta_size;
size_t deflate_size;
size_t data_size;
/* We could do deflated delta, or we could do just deflated two,
* whichever is smaller.
@@ -3647,11 +3647,9 @@ static void emit_binary_diff_body(struct diff_options *o,
delta = NULL;
deflated = deflate_it(two->ptr, two->size, &deflate_size);
if (one->size && two->size) {
size_t delta_size_st = 0;
delta = diff_delta(one->ptr, one->size,
two->ptr, two->size,
&delta_size_st, deflate_size);
delta_size = cast_size_t_to_ulong(delta_size_st);
&delta_size, deflate_size);
if (delta) {
void *to_free = delta;
orig_size = delta_size;
@@ -4597,9 +4595,8 @@ int diff_populate_filespec(struct repository *r,
}
}
else {
size_t size_st = 0;
struct object_info info = {
.sizep = &size_st
.sizep = &s->size
};
if (!(size_only || check_binary))
@@ -4621,7 +4618,6 @@ 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;
@@ -4636,7 +4632,6 @@ 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;
}
@@ -7847,7 +7842,7 @@ int textconv_object(struct repository *r,
const struct object_id *oid,
int oid_valid,
char **buf,
unsigned long *buf_size)
size_t *buf_size)
{
struct diff_filespec *df;
struct userdiff_driver *textconv;

2
diff.h
View File

@@ -757,7 +757,7 @@ int textconv_object(struct repository *repo,
const char *path,
unsigned mode,
const struct object_id *oid, int oid_valid,
char **buf, unsigned long *buf_size);
char **buf, size_t *buf_size);
int parse_rename_score(const char **cp_p);

View File

@@ -54,7 +54,7 @@ struct diff_filespec {
char *path;
void *data;
void *cnt_data;
unsigned long size;
size_t size;
int count; /* Reference count */
int rename_used; /* Count of rename users */
unsigned short mode; /* file mode */

View File

@@ -411,7 +411,7 @@ int chmod_index_entry(struct index_state *, struct cache_entry *ce, char flip);
int ce_same_name(const struct cache_entry *a, const struct cache_entry *b);
void set_object_name_for_intent_to_add_entry(struct cache_entry *ce);
int index_name_is_other(struct index_state *, const char *, int);
void *read_blob_data_from_index(struct index_state *, const char *, unsigned long *);
void *read_blob_data_from_index(struct index_state *, const char *, size_t *);
/* do stat comparison even if CE_VALID is true */
#define CE_MATCH_IGNORE_VALID 01

View File

@@ -3459,7 +3459,7 @@ int index_name_is_other(struct index_state *istate, const char *name,
}
void *read_blob_data_from_index(struct index_state *istate,
const char *path, unsigned long *size)
const char *path, size_t *size)
{
int pos, len;
size_t sz;
@@ -3490,7 +3490,7 @@ void *read_blob_data_from_index(struct index_state *istate,
return NULL;
}
if (size)
*size = cast_size_t_to_ulong(sz);
*size = sz;
return data;
}

View File

@@ -195,7 +195,7 @@ void read_mmblob(mmfile_t *ptr, struct object_database *odb,
}
#define FIRST_FEW_BYTES 8000
int buffer_is_binary(const char *ptr, unsigned long size)
int buffer_is_binary(const char *ptr, size_t size)
{
if (FIRST_FEW_BYTES < size)
size = FIRST_FEW_BYTES;

View File

@@ -49,7 +49,7 @@ int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2,
int read_mmfile(mmfile_t *ptr, const char *filename);
void read_mmblob(mmfile_t *ptr, struct object_database *odb,
const struct object_id *oid);
int buffer_is_binary(const char *ptr, unsigned long size);
int buffer_is_binary(const char *ptr, size_t size);
void xdiff_set_find_func(xdemitconf_t *xecfg, const char *line, int cflags);
void xdiff_clear_find_func(xdemitconf_t *xecfg);