diff options
-rw-r--r-- | libfdisk/src/dos.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c index 44d022155..12d014449 100644 --- a/libfdisk/src/dos.c +++ b/libfdisk/src/dos.c @@ -401,7 +401,7 @@ static void reset_pte(struct pte *pe) memset(pe, 0, sizeof(struct pte)); } -static int dos_delete_partition(struct fdisk_context *cxt, size_t partnum) +static int delete_partition(struct fdisk_context *cxt, size_t partnum) { struct fdisk_dos_label *l; struct pte *pe; @@ -499,6 +499,21 @@ static int dos_delete_partition(struct fdisk_context *cxt, size_t partnum) return 0; } +static int dos_delete_partition(struct fdisk_context *cxt, size_t partnum) +{ + struct pte *pe; + + assert(cxt); + assert(cxt->label); + assert(fdisk_is_label(cxt, DOS)); + + pe = self_pte(cxt, partnum); + if (!pe || !is_used_partition(pe->pt_entry)) + return -EINVAL; + + return delete_partition(cxt, partnum); +} + static void read_extended(struct fdisk_context *cxt, size_t ext) { size_t i; @@ -628,7 +643,7 @@ static void read_extended(struct fdisk_context *cxt, size_t ext) if (p && !dos_partition_get_size(p) && (cxt->label->nparts_max > 5 || (q && q->sys_ind))) { fdisk_info(cxt, _("omitting empty partition (%zu)"), i+1); - dos_delete_partition(cxt, i); + delete_partition(cxt, i); goto remove; /* numbering changed */ } } |