From: Jonathan Dieter Date: Tue, 5 Jun 2018 11:11:51 +0000 (+0300) Subject: Change zck_range_close to zck_range_free and fix zck_get_dl_range X-Git-Tag: archive/raspbian/1.1.9+ds1-1+rpi1~1^2~251 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=152f06927f7f7be112c69644f49ae86a1a447eb5;p=zchunk.git Change zck_range_close to zck_range_free and fix zck_get_dl_range Signed-off-by: Jonathan Dieter --- diff --git a/src/lib/dl/range.c b/src/lib/dl/range.c index 4afc137..8a88626 100644 --- a/src/lib/dl/range.c +++ b/src/lib/dl/range.c @@ -42,15 +42,16 @@ void zck_range_remove(zckRangeItem *range) { free(range); } -void PUBLIC zck_range_close(zckRange *info) { - zckRangeItem *next = info->first; +void PUBLIC zck_range_free(zckRange **info) { + zckRangeItem *next = (*info)->first; while(next) { zckRangeItem *tmp = next; next = next->next; free(tmp); } - zck_index_clean(&(info->index)); - memset(info, 0, sizeof(zckRange)); + zck_index_clean(&((*info)->index)); + free(*info); + *info = NULL; } zckRangeItem *zck_range_insert_new(zckRangeItem *prev, zckRangeItem *next, uint64_t start, @@ -200,25 +201,16 @@ zckRange PUBLIC *zck_get_dl_range(zckCtx *zck, int max_ranges) { sizeof(zckRange)); return NULL; } - zckIndexItem **range_idx = &(range->index.first); zckIndexItem *idx = zck->index.first; - size_t start = 0; while(idx) { - if(idx->valid) + if(idx->valid) { + idx = idx->next; continue; - if(!zck_range_add(range, idx, zck)) { - zck_range_close(range); - return NULL; } - *range_idx = copy_index_item(idx); - if(*range_idx == NULL) { - zck_range_close(range); + if(!zck_range_add(range, idx, zck)) { + zck_range_free(&range); return NULL; } - (*range_idx)->start = start; - range_idx = &((*range_idx)->next); - start += idx->comp_length; - if(max_ranges >= 0 && range->count >= max_ranges) break; idx = idx->next;