Re: [PATCH v2 2/3] textconv: support for blame
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 14, 2010, 20:40 UTC
- Message-ID
- <7vfx0p9wlm.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1275924218-20154-2-git-send-email-axel.bonnet@ensimag.imag.fr>
Axel Bonnet <axel.bonnet@ensimag.imag.fr> writes:
Show 14 quoted lines
> @@ -86,16 +87,49 @@ struct origin {
> ...
> +static void fill_origin_blob(struct diff_options *opt,
> + struct origin *o, mmfile_t *file)
> {
> if (!o->file.ptr) {
> enum object_type type;
> num_read_blob++;
> - file->ptr = read_sha1_file(o->blob_sha1, &type,
> - (unsigned long *)(&(file->size)));
> +
> + if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
> + textconv_object(o->path, o->blob_sha1, &file->ptr,
> + (size_t *) &file->size))This cast is not correct, as there is no guarantee that your size_t and typeof(mmfile_t.size) are compatible. Depending on the gcc version, you would get "dereferencing type-punned pointer will break strict-aliasing rules" error.
The same issue exists in Clément's patch to builtin/cat-file.c.