From: Martin Mares Date: Sun, 13 Jan 2002 14:34:00 +0000 (+0000) Subject: Don't call the callback function twice when deleting a bucket. X-Git-Tag: holmes-import~1452 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=7b1232abb78e18aee13284d7dfdfe8ec944db08a;p=libucw.git Don't call the callback function twice when deleting a bucket. --- diff --git a/lib/bucket.c b/lib/bucket.c index 626c87ac..e35f99f8 100644 --- a/lib/bucket.c +++ b/lib/bucket.c @@ -349,27 +349,29 @@ obuck_shakedown(int (*kibitz)(struct obuck_header *old, oid_t new, byte *buck)) goto reread; if (GET_U32(rbuf + roff + l - 4) != OBUCK_TRAILER) obuck_broken("missing trailer during shakedown"); - if (rhdr->oid != OBUCK_OID_DELETED && - kibitz(rhdr, w_bucket_start >> OBUCK_SHIFT, (byte *)(rhdr+1))) + if (rhdr->oid != OBUCK_OID_DELETED) { - if (bucket_start == w_bucket_start) + if (kibitz(rhdr, w_bucket_start >> OBUCK_SHIFT, (byte *)(rhdr+1))) { - /* No copying needed now nor ever in the past, hence woff==0 */ - wstart += l; - } - else - { - if (obuck_shake_buflen - woff < l) + if (bucket_start == w_bucket_start) + { + /* No copying needed now nor ever in the past, hence woff==0 */ + wstart += l; + } + else { - if (sh_pwrite(obuck_fd, wbuf, woff, wstart) != woff) - die("obuck_shakedown write failed: %m"); - wstart += woff; - woff = 0; + if (obuck_shake_buflen - woff < l) + { + if (sh_pwrite(obuck_fd, wbuf, woff, wstart) != woff) + die("obuck_shakedown write failed: %m"); + wstart += woff; + woff = 0; + } + whdr = (struct obuck_header *)(wbuf+woff); + memcpy(whdr, rhdr, l); + whdr->oid = w_bucket_start >> OBUCK_SHIFT; + woff += l; } - whdr = (struct obuck_header *)(wbuf+woff); - memcpy(whdr, rhdr, l); - whdr->oid = w_bucket_start >> OBUCK_SHIFT; - woff += l; } } else