summaryrefslogtreecommitdiff
path: root/fdisk
diff options
context:
space:
mode:
authorForest Bond <forest@alittletooquiet.net>2010-10-04 21:01:30 -0400
committerKarel Zak <kzak@redhat.com>2010-10-07 10:22:02 +0200
commit628e30197e106f0dea32aa01e9a43c4cab0b07fe (patch)
tree95210d64eeee56ff8e964eb32c23e09dbc32920a /fdisk
parent6cebde5c9647f2c9b1dc5cc5c1a230864c0c2570 (diff)
downloadutil-linux-old-628e30197e106f0dea32aa01e9a43c4cab0b07fe.tar.gz
sfdisk: save errno before calling perror
errno is saved into a local variable to avoid it getting trampled by perror before it is checked to determine the return value. This issue seems quite rare, but I have seen it when running sfdisk via gksudo and using the --quiet command-line option. From what I can tell, this combination triggers loading of translations in perror, which (at least on my machine) ends up changing the value of errno. Signed-off-by: Forest Bond <forest@alittletooquiet.net>
Diffstat (limited to 'fdisk')
-rw-r--r--fdisk/sfdisk.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index 6432b25c..fd2f27eb 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -784,10 +784,13 @@ reread_ioctl(int fd) {
errno = ENOSYS;
#endif
{
+ /* perror might change errno */
+ int err = errno;
+
perror("BLKRRPART");
/* 2.6.8 returns EIO for a zero table */
- if (errno == EBUSY)
+ if (err == EBUSY)
return -1;
}
return 0;