Junio C Hamano <[email protected]> writes:

> Ævar Arnfjörð Bjarmason  <[email protected]> writes:
>
>>      if (rev->rdiff1) {
>> +            struct diff_options opts;
>> +            memcpy(&opts, &rev->diffopt, sizeof(opts));
>> +            opts.output_format &= ~(DIFF_FORMAT_DIFFSTAT | 
>> DIFF_FORMAT_SUMMARY);
>> +
>>              fprintf_ln(rev->diffopt.file, "%s", rev->rdiff_title);
>>              show_range_diff(rev->rdiff1, rev->rdiff2,
>> -                            rev->creation_factor, 1, &rev->diffopt);
>> +                            rev->creation_factor, 1, &opts);
>
> I am not quite convinced if this shallow copy is a safe thing to do.
> Quite honestly at this late in the release cycle, as a band-aid, I'd
> rather see a simpler revert than a change like this that we have to
> worry about what happens if/when show_range_diff() _thinks_ it is
> done with the opts and ends up discarding resources (e.g. "FILE *")
> that are shared with rev->diffopt that would still have to be used
> later.

Well, let's take it anyway as-is, at least for today, as I notice
show_range_diff() itself does another shallow copy, so we are not
making anything dramatically worse.

Thanks.

Reply via email to