From 628e30197e106f0dea32aa01e9a43c4cab0b07fe Mon Sep 17 00:00:00 2001 From: Forest Bond Date: Mon, 4 Oct 2010 21:01:30 -0400 Subject: [PATCH] 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 --- fdisk/sfdisk.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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; -- 2.39.5