# # # patch "ChangeLog" # from [bbdaedc69865c817348af47072b09b2ffffe165e] # to [338cd661b8c3431393b92e155ca8795f532de858] # # patch "xdelta.cc" # from [ca81232c81372cbbc5a641bcb761747e286f83a7] # to [0dba3763bd06fe89479c0c91d649eaba2b9e37ba] # ============================================================ --- ChangeLog bbdaedc69865c817348af47072b09b2ffffe165e +++ ChangeLog 338cd661b8c3431393b92e155ca8795f532de858 @@ -1,3 +1,7 @@ +2006-05-12 Graydon Hoare + + * xdelta.cc (apply_delta): Tolerate 0-length instructions. + 2006-05-11 Patrick Mauritz * roster.cc: include proper header for srand, rand and prefix ============================================================ --- xdelta.cc ca81232c81372cbbc5a641bcb761747e286f83a7 +++ xdelta.cc 0dba3763bd06fe89479c0c91d649eaba2b9e37ba @@ -350,15 +350,17 @@ ++i; I(i != delta.end()); string::size_type len = read_num(i, delta.end()); - I(len != 0); I(i != delta.end()); I(*i == '\n'); ++i; I(i != delta.end()); - I((i - delta.begin()) + len <= delta.size()); - string tmp(i, i+len); - i += len; - da->insert(tmp); + I((i - delta.begin()) + len <= delta.size()); + if (len > 0) + { + string tmp(i, i+len); + da->insert(tmp); + } + i += len; } else { @@ -368,8 +370,8 @@ string::size_type pos = read_num(i, delta.end()); I(i != delta.end()); string::size_type len = read_num(i, delta.end()); - I(len != 0); - da->copy(pos, len); + if (len != 0) + da->copy(pos, len); } I(i != delta.end()); I(*i == '\n');