2009/6/7 Piotr Piastucki <[email protected]>:
> I am a bit surprised that the patch is not self-explanatory, because the
> code in diffutil is quite simple after all, but here is the info you
> requested:

Parts 2 and 3 are indeed obvious, given that part 1 is correct.

> 1) block is not need if
> len(using[0])==0 OR len(using[1])==0
> because of:
> ...
>           block = self._merge_blocks( using, base_seq, high_seq, block)
>
>           if len(using[0])==0:
>               assert len(using[1])==1
>               yield None, using[1][0]
>           elif len(using[1])==0:
>               assert len(using[0])==1
>               yield using[0][0], None
>           else:
> ...
> so moving the call here does not change anything:
> ...
>               yield using[0][0], None
>           else:
>               block = self._merge_blocks( using, base_seq, high_seq, block)
> ...

This isn't (by itself) true. The call you're moving assigns to block,
which is used in subsequent calls to _merge_blocks(). In order to not
change behaviour, either the value of block needs to be unchanged by
the cases that you're now skipping, or the changes to block need to be
irrelevant. The commit message should include some brief explanation
about why this is the case.

Kai
_______________________________________________
meld-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/meld-list

Reply via email to