]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: again improve freespace code
authorKarel Zak <kzak@redhat.com>
Mon, 3 Feb 2014 17:05:57 +0000 (18:05 +0100)
committerKarel Zak <kzak@redhat.com>
Tue, 11 Mar 2014 10:35:14 +0000 (11:35 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libfdisk/src/table.c

index a78be477fb4e3c0eb54059ed6eded071888acfcc..6b8c6e3a34971c38e61a653019e3caa6dbc12b04 100644 (file)
@@ -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);