[glib] Handle EINTR for a few more write() calls
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Handle EINTR for a few more write() calls
- Date: Fri, 25 Jan 2013 16:26:50 +0000 (UTC)
commit 090f874626312e83d053a51aeb59670b2a9655d7
Author: Colin Walters <walters verbum org>
Date: Wed Aug 29 11:44:01 2012 -0400
Handle EINTR for a few more write() calls
https://bugzilla.gnome.org/show_bug.cgi?id=682819
glib/gmessages.c | 5 ++++-
glib/gwakeup.c | 13 +++++++++++--
2 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/glib/gmessages.c b/glib/gmessages.c
index 91d7a21..d346eaf 100644
--- a/glib/gmessages.c
+++ b/glib/gmessages.c
@@ -281,7 +281,10 @@ static void
write_string (int fd,
const gchar *string)
{
- write (fd, string, strlen (string));
+ int res;
+ do
+ res = write (fd, string, strlen (string));
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
}
static GLogDomain*
diff --git a/glib/gwakeup.c b/glib/gwakeup.c
index bb49059..ad92d56 100644
--- a/glib/gwakeup.c
+++ b/glib/gwakeup.c
@@ -230,11 +230,20 @@ void
g_wakeup_signal (GWakeup *wakeup)
{
guint64 one = 1;
+ int res;
if (wakeup->fds[1] == -1)
- write (wakeup->fds[0], &one, sizeof one);
+ {
+ do
+ res = write (wakeup->fds[0], &one, sizeof one);
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
+ }
else
- write (wakeup->fds[1], &one, 1);
+ {
+ do
+ write (wakeup->fds[1], &one, 1);
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
+ }
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]