From: Karel Zak Date: Mon, 3 Feb 2014 17:05:57 +0000 (+0100) Subject: libfdisk: again improve freespace code X-Git-Tag: v2.25-rc1~482 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aa423fd39eabdcc2e315997018eece3cd0c41951;p=thirdparty%2Futil-linux.git libfdisk: again improve freespace code Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/table.c b/libfdisk/src/table.c index a78be477fb..6b8c6e3a34 100644 --- a/libfdisk/src/table.c +++ b/libfdisk/src/table.c @@ -438,10 +438,11 @@ int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb) fdisk_reset_iter(&itr, FDISK_ITER_FORWARD); while (fdisk_table_next_partition(parts, &itr, &pa) == 0) { - uint64_t lastfree = pa->start - 1 - cxt->first_lba; + uint64_t lastfree; if (!pa->used || !pa->nested) continue; + lastfree = pa->start - 1 - cxt->first_lba; if (last + grain < lastfree) { rc = table_add_freespace(cxt, *tb, last + grain, lastfree, @@ -457,7 +458,7 @@ int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb) /* free-space remaining in extended partition */ x = fdisk_partition_get_start(parent) + fdisk_partition_get_size(parent) - 1; - if (last + grain < x) + if (last + grain < x) { rc = table_add_freespace(cxt, *tb, last + grain, x - 1, dosort, &fr); @@ -466,6 +467,7 @@ int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb) fr->nested = 1; } } + } done: fdisk_unref_table(parts);