diff options
| author | Forest Bond <forest@alittletooquiet.net> | 2010-10-04 21:01:30 -0400 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2010-10-07 10:22:02 +0200 |
| commit | 628e30197e106f0dea32aa01e9a43c4cab0b07fe (patch) | |
| tree | 95210d64eeee56ff8e964eb32c23e09dbc32920a /fdisk | |
| parent | 6cebde5c9647f2c9b1dc5cc5c1a230864c0c2570 (diff) | |
| download | util-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.c | 5 |
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; |
