File 0100-Don-t-ignore-return-value-from-read-and-write.patch of Package mdadm.5365

From 27aefbdb3d52b9a4f4299b931003e4a8760b5dc2 Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@suse.com>
Date: Fri, 24 Jul 2015 16:11:23 +1000
Subject: [PATCH 146/359] Don't ignore return value from read and write
References: bsc#1081910

New gcc sometimes complains about this.

Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Coly Li <colyli@suse.de>

---
 managemon.c |  4 +++-
 xmalloc.c   | 24 ++++++++++++++++--------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/managemon.c b/managemon.c
index ec4586b..6d1b3d8 100644
--- a/managemon.c
+++ b/managemon.c
@@ -410,7 +410,9 @@ static int sysfs_open2(char *devnum, char *name, char *attr)
 		 * never needs too.
 		 */
 		char buf[200];
-		read(fd, buf, sizeof(buf));
+		if (read(fd, buf, sizeof(buf)) < 0)
+			/* pretend not to ignore return value */
+			return fd;
 	}
 	return fd;
 }
diff --git a/xmalloc.c b/xmalloc.c
index 75ae4e2..8b3f78a 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -35,42 +35,50 @@ void *xmalloc(size_t len)
 {
 	void *rv = malloc(len);
 	char *msg;
+	int n;
 	if (rv)
 		return rv;
 	msg = ": memory allocation failure - aborting\n";
-	write(2, Name, strlen(Name));
-	exit(4+!!write(2, msg, strlen(msg)));
+	n = write(2, Name, strlen(Name));
+	n += write(2, msg, strlen(msg));
+	exit(4+!!n);
 }
 
 void *xrealloc(void *ptr, size_t len)
 {
 	void *rv = realloc(ptr, len);
 	char *msg;
+	int n;
 	if (rv)
 		return rv;
 	msg =  ": memory allocation failure - aborting\n";
-	write(2, Name, strlen(Name));
-	exit(4+!!write(2, msg, strlen(msg)));
+	n = write(2, Name, strlen(Name));
+	n += write(2, msg, strlen(msg));
+	exit(4+!!n);
 }
 
 void *xcalloc(size_t num, size_t size)
 {
 	void *rv = calloc(num, size);
 	char *msg;
+	int n;
 	if (rv)
 		return rv;
 	msg =  ": memory allocation failure - aborting\n";
-	write(2, Name, strlen(Name));
-	exit(4+!!write(2, msg, strlen(msg)));
+	n = write(2, Name, strlen(Name));
+	n += write(2, msg, strlen(msg));
+	exit(4+!!n);
 }
 
 char *xstrdup(const char *str)
 {
 	char *rv = strdup(str);
 	char *msg;
+	int n;
 	if (rv)
 		return rv;
 	msg =  ": memory allocation failure - aborting\n";
-	write(2, Name, strlen(Name));
-	exit(4+!!write(2, msg, strlen(msg)));
+	n = write(2, Name, strlen(Name));
+	n += write(2, msg, strlen(msg));
+	exit(4+!!n);
 }
-- 
2.16.1

openSUSE Build Service is sponsored by