Diff
Not logged in

Differences From Artifact [ace8143552]:

To Artifact [128bbd859d]:


197
198
199
200
201
202
203

204
205








206
207
208
209
210
211


212
213

214
215
216
217



218
219
220

221
222
223
224
225
226
227
197
198
199
200
201
202
203
204


205
206
207
208
209
210
211
212
213
214
215
216


217
218
219

220
221



222
223
224
225
226

227
228
229
230
231
232
233
234







+
-
-
+
+
+
+
+
+
+
+




-
-
+
+

-
+

-
-
-
+
+
+


-
+







*/
static unsigned int checksum(const char *zIn, size_t N){
  const unsigned char *z = (const unsigned char *)zIn;
  unsigned sum0 = 0;
  unsigned sum1 = 0;
  unsigned sum2 = 0;
  unsigned sum3 = 0;
  while(N >= 16){
  unsigned sum;
  while( N>=4 ){
    sum0 += ((unsigned)z[0] + z[4] + z[8] + z[12]);
    sum1 += ((unsigned)z[1] + z[5] + z[9] + z[13]);
    sum2 += ((unsigned)z[2] + z[6] + z[10]+ z[14]);
    sum3 += ((unsigned)z[3] + z[7] + z[11]+ z[15]);
    z += 16;
    N -= 16;
  }
  while(N >= 4){
    sum0 += z[0];
    sum1 += z[1];
    sum2 += z[2];
    sum3 += z[3];
    N -= 4;
    z += 4;
    z += 4;
    N -= 4;
  }
  sum = (sum0 << 24) + (sum1 << 16) + (sum2 << 8) + sum3;
  sum3 += (sum2 << 8) + (sum1 << 16) + (sum0 << 24);
  switch(N){
    case 3:   sum += (z[2] << 8);
    case 2:   sum += (z[1] << 16);
    case 1:   sum += (z[0] << 24);
    case 3:   sum3 += (z[2] << 8);
    case 2:   sum3 += (z[1] << 16);
    case 1:   sum3 += (z[0] << 24);
    default:  ;
  }
  return sum;
  return sum3;
}

/*
** Create a new delta.
**
** The delta is written into a preallocated buffer, zDelta, which 
** should be at least 60 bytes longer than the target file, zOut.