summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libfdisk/src/table.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libfdisk/src/table.c b/libfdisk/src/table.c
index 7718daebb..99a669ca2 100644
--- a/libfdisk/src/table.c
+++ b/libfdisk/src/table.c
@@ -578,7 +578,7 @@ done:
*
* Note that free space smaller than grain (see fdisk_get_grain_size()) is
* ignored.
-
+ *
* Returns: 0 on success, otherwise, a corresponding error.
*/
int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb)
@@ -635,7 +635,12 @@ int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb)
/* add gaps between logical partitions */
if (fdisk_partition_is_container(pa))
rc = check_container_freespace(cxt, parts, *tb, pa);
- last = fdisk_partition_get_end(pa);
+
+ if (fdisk_partition_has_end(pa)) {
+ fdisk_sector_t pa_end = fdisk_partition_get_end(pa);
+ if (pa_end > last)
+ last = fdisk_partition_get_end(pa);
+ }
nparts++;
}