X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=count-delta.c;h=058a2aadb1475801ea7573837867fa79bf1766c1;hb=567ffeb7722eefab3991cb894c96548b92b57cc2;hp=7559ff68b10925154af3d52b8134f47fcf7c5233;hpb=9d34c29db39bdb5c2443475dd6a24cfc5c2c9e37;p=git.git diff --git a/count-delta.c b/count-delta.c index 7559ff68..058a2aad 100644 --- a/count-delta.c +++ b/count-delta.c @@ -16,11 +16,7 @@ * * Number of bytes that are _not_ copied from the source is deletion, * and number of inserted literal bytes are addition, so sum of them - * is the extent of damage. xdelta can express an edit that copies - * data inside of the destination which originally came from the - * source. We do not count that in the following routine, so we are - * undercounting the source material that remains in the final output - * that way. + * is the extent of damage. */ int count_delta(void *delta_buf, unsigned long delta_size, unsigned long *src_copied, unsigned long *literal_added) @@ -50,13 +46,10 @@ int count_delta(void *delta_buf, unsigned long delta_size, if (cmd & 0x08) cp_off |= (*data++ << 24); if (cmd & 0x10) cp_size = *data++; if (cmd & 0x20) cp_size |= (*data++ << 8); + if (cmd & 0x40) cp_size |= (*data++ << 16); if (cp_size == 0) cp_size = 0x10000; - if (cmd & 0x40) - /* copy from dst */ - ; - else - copied_from_source += cp_size; + copied_from_source += cp_size; out += cp_size; } else { /* write literal into dst */