]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: (dos) use size-=1 when alignment not used later
authorKarel Zak <kzak@redhat.com>
Tue, 22 Aug 2017 12:54:27 +0000 (14:54 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 22 Aug 2017 12:54:27 +0000 (14:54 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
libfdisk/src/dos.c

index 6fa9108edddb0240bd972d0900f6bce80233ec6c..1e0480ea1f36e7c2620b42e5eac04e5edb582bd8 100644 (file)
@@ -1196,7 +1196,7 @@ static int add_partition(struct fdisk_context *cxt, size_t n,
        else if (pa && fdisk_partition_has_size(pa)) {
                stop = start + pa->size;
                isrel = pa->size_explicit ? 0 : 1;
-               if (!isrel && stop > start)
+               if ((!isrel || !alignment_required(cxt)) && stop > start)
                        stop -= 1;
        } else {
                /* ask user by dialog */
@@ -1242,7 +1242,7 @@ static int add_partition(struct fdisk_context *cxt, size_t n,
                }
        }
 
-       DBG(LABEL, ul_debug("DOS: raw stop: %ju", (uintmax_t) stop));
+       DBG(LABEL, ul_debug("DOS: raw stop: %ju [limit %ju]", (uintmax_t) stop, (uintmax_t) limit));
 
        if (stop > limit)
                stop = limit;
@@ -1252,7 +1252,7 @@ static int add_partition(struct fdisk_context *cxt, size_t n,
                isrel = 0;
                if (stop > start)
                        stop -= 1;
-               DBG(LABEL, ul_debug("DOS: don't align end os tiny partition [start=%ju, stop=%ju, grain=%lu]",
+               DBG(LABEL, ul_debug("DOS: don't align end of tiny partition [start=%ju, stop=%ju, grain=%lu]",
                            (uintmax_t)start,  (uintmax_t)stop, cxt->grain));
        }