summaryrefslogtreecommitdiffstats
path: root/libfdisk/src/sun.c
diff options
context:
space:
mode:
Diffstat (limited to 'libfdisk/src/sun.c')
-rw-r--r--libfdisk/src/sun.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libfdisk/src/sun.c b/libfdisk/src/sun.c
index babff6263..d99c39f6f 100644
--- a/libfdisk/src/sun.c
+++ b/libfdisk/src/sun.c
@@ -957,9 +957,11 @@ static int sun_write_disklabel(struct fdisk_context *cxt)
sunlabel->nhead = cpu_to_be16(cxt->geom.heads);
sunlabel->nsect = cpu_to_be16(cxt->geom.sectors);
- if (cxt->geom.cylinders != be16_to_cpu(sunlabel->ncyl))
- sunlabel->ncyl = cpu_to_be16( cxt->geom.cylinders
- - be16_to_cpu(sunlabel->acyl) );
+ if (cxt->geom.cylinders != be16_to_cpu(sunlabel->ncyl)) {
+ int a = cpu_to_be16(cxt->geom.cylinders);
+ int b = be16_to_cpu(sunlabel->acyl);
+ sunlabel->ncyl = a - b;
+ }
ush = (unsigned short *) sunlabel;