aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--process.c6
-rw-r--r--random.c4
3 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ebb4e07d1..bd609b4e80 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Jul 13 21:28:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_err): suppress gcc 4.4 warnings.
+
+ * random.c (fill_random_seed): ditto.
+
Tue Jul 13 21:01:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/pty/pty.c (establishShell): chfunc must not raise any
diff --git a/process.c b/process.c
index 9e52392320..8e601ba850 100644
--- a/process.c
+++ b/process.c
@@ -2513,10 +2513,12 @@ rb_fork_err(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALU
if (!(*chfunc)(charg, errmsg, errmsg_buflen)) _exit(EXIT_SUCCESS);
#ifdef FD_CLOEXEC
err = errno;
- (void)write(ep[1], &err, sizeof(err));
+ if (write(ep[1], &err, sizeof(err)) < 0) err = errno;
if (errmsg && 0 < errmsg_buflen) {
errmsg[errmsg_buflen-1] = '\0';
- (void)write(ep[1], errmsg, strlen(errmsg));
+ errmsg_buflen = strlen(errmsg);
+ if (errmsg_buflen > 0 &&write(ep[1], errmsg, errmsg_buflen) < 0)
+ err = errno;
}
#endif
#if EXIT_SUCCESS == 127
diff --git a/random.c b/random.c
index 2da40b2bb6..333c593ff5 100644
--- a/random.c
+++ b/random.c
@@ -489,7 +489,9 @@ fill_random_seed(unsigned int seed[DEFAULT_SEED_CNT])
#endif
)) >= 0) {
if (fstat(fd, &statbuf) == 0 && S_ISCHR(statbuf.st_mode)) {
- (void)read(fd, seed, DEFAULT_SEED_LEN);
+ if (read(fd, seed, DEFAULT_SEED_LEN) < DEFAULT_SEED_LEN) {
+ /* abandon */;
+ }
}
close(fd);
}