diff options
author | Karel Zak | 2012-10-23 15:10:26 +0200 |
---|---|---|
committer | Karel Zak | 2012-10-23 15:10:26 +0200 |
commit | 8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e (patch) | |
tree | 9c2ff7c7b71125397118cfdb900f8c9245e1c994 | |
parent | misc: make readlink() usage more robust (diff) | |
download | kernel-qcow2-util-linux-8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e.tar.gz kernel-qcow2-util-linux-8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e.tar.xz kernel-qcow2-util-linux-8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e.zip |
fdisk: fix compiler warning [-Wpointer-arith] and floating point exception
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | fdisks/fdisksgilabel.c | 24 | ||||
-rw-r--r-- | sys-utils/readprofile.c | 2 |
2 files changed, 14 insertions, 12 deletions
diff --git a/fdisks/fdisksgilabel.c b/fdisks/fdisksgilabel.c index 665d3e75b..79313624e 100644 --- a/fdisks/fdisksgilabel.c +++ b/fdisks/fdisksgilabel.c @@ -393,25 +393,26 @@ compare_start(struct fdisk_context *cxt, const void *x, const void *y) { return (a > b) ? 1 : -1; } -static void generic_swap(void *a, void *b, int size) +static void generic_swap(void *a0, void *b0, int size) { - char t; + char *a = a0, *b = b0; - do { - t = *(char *)a; - *(char *)a++ = *(char *)b; - *(char *)b++ = t; - } while (--size > 0); + for (; size > 0; --size, a++, b++) { + char t = *a; + *a = *b; + *b = t; + } } /* heap sort, based on Matt Mackall's linux kernel version */ -static void sort(void *base, size_t num, size_t size, struct fdisk_context *cxt, +static void sort(void *base0, size_t num, size_t size, struct fdisk_context *cxt, int (*cmp_func)(struct fdisk_context *, const void *, const void *)) { /* pre-scale counters for performance */ int i = (num/2 - 1) * size; size_t n = num * size, c, r; + char *base = base0; /* heapify */ for ( ; i >= 0; i -= size) { @@ -493,13 +494,14 @@ static int sgi_verify_disklabel(struct fdisk_context *cxt) } for (i=1, start=0; i<sortcount; i++) { int cylsize = sgi_get_nsect(cxt) * sgi_get_ntrks(cxt); - if ((sgi_get_start_sector(cxt, Index[i]) % cylsize) != 0) { + + if (cylsize && (sgi_get_start_sector(cxt, Index[i]) % cylsize) != 0) { if (debug) /* I do not understand how some disks fulfil it */ if (verbose) printf(_("Partition %d does not start on cylinder boundary.\n"), Index[i]+1); } - if (sgi_get_num_sectors(cxt, Index[i]) % cylsize != 0) { + if (cylsize && sgi_get_num_sectors(cxt, Index[i]) % cylsize != 0) { if (debug) /* I do not understand how some disks fulfil it */ if (verbose) printf(_("Partition %d does not end on cylinder boundary.\n"), @@ -526,7 +528,7 @@ static int sgi_verify_disklabel(struct fdisk_context *cxt) start = sgi_get_start_sector(cxt, Index[i]) + sgi_get_num_sectors(cxt, Index[i]); /* Align free space on cylinder boundary */ - if (start % cylsize) + if (cylsize && start % cylsize) start += cylsize - (start % cylsize); if (debug > 1) { if (verbose) diff --git a/sys-utils/readprofile.c b/sys-utils/readprofile.c index 04d9c7375..5b77c4956 100644 --- a/sys-utils/readprofile.c +++ b/sys-utils/readprofile.c @@ -229,7 +229,7 @@ int main(int argc, char **argv) to_write = 1; } /* try to become root, just in case */ - setuid(0); + ignore_result( setuid(0) ); fd = open(defaultpro, O_WRONLY); if (fd < 0) err(EXIT_FAILURE, "%s", defaultpro); |