[glib] Bug 591214 - Warnings building gcancellable.o
- From: Ryan Lortie <ryanl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [glib] Bug 591214 - Warnings building gcancellable.o
- Date: Mon, 23 Nov 2009 18:54:02 +0000 (UTC)
commit 85501f5ffabe59ac38daf4d29990a7d5cd949c31
Author: Ryan Lortie <desrt desrt ca>
Date: Wed Nov 11 23:31:12 2009 -0500
Bug 591214 - Warnings building gcancellable.o
- check for EINTR on read() and write() calls
- remove unused 'priv' variable
gio/gcancellable.c | 33 ++++++++++++++++++++++++++-------
1 files changed, 26 insertions(+), 7 deletions(-)
---
diff --git a/gio/gcancellable.c b/gio/gcancellable.c
index db23575..07b61b7 100644
--- a/gio/gcancellable.c
+++ b/gio/gcancellable.c
@@ -24,6 +24,7 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <errno.h>
#include <fcntl.h>
#include <gioerror.h>
#ifdef G_OS_WIN32
@@ -226,7 +227,6 @@ set_fd_close_exec (int fd)
static void
g_cancellable_open_pipe (GCancellable *cancellable)
{
- const char ch = 'x';
GCancellablePrivate *priv;
priv = cancellable->priv;
@@ -241,7 +241,14 @@ g_cancellable_open_pipe (GCancellable *cancellable)
set_fd_close_exec (priv->cancel_pipe[1]);
if (priv->cancelled)
- write (priv->cancel_pipe[1], &ch, 1);
+ {
+ const char ch = 'x';
+ gssize c;
+
+ do
+ c = write (priv->cancel_pipe[1], &ch, 1);
+ while (c == -1 && errno == EINTR);
+ }
}
}
#endif
@@ -368,8 +375,6 @@ g_cancellable_reset (GCancellable *cancellable)
if (priv->cancelled)
{
- char ch;
-
/* Make sure we're not leaving old cancel state around */
#ifdef G_OS_WIN32
@@ -377,7 +382,15 @@ g_cancellable_reset (GCancellable *cancellable)
ResetEvent (priv->event);
#endif
if (priv->cancel_pipe[0] != -1)
- read (priv->cancel_pipe[0], &ch, 1);
+ {
+ gssize c;
+ char ch;
+
+ do
+ c = read (priv->cancel_pipe[0], &ch, 1);
+ while (c == -1 && errno == EINTR);
+ }
+
priv->cancelled = FALSE;
}
G_UNLOCK(cancellable);
@@ -600,7 +613,6 @@ g_cancellable_release_fd (GCancellable *cancellable)
void
g_cancellable_cancel (GCancellable *cancellable)
{
- const char ch = 'x';
gboolean cancel;
GCancellablePrivate *priv;
@@ -620,7 +632,14 @@ g_cancellable_cancel (GCancellable *cancellable)
SetEvent (priv->event);
#endif
if (priv->cancel_pipe[1] != -1)
- write (priv->cancel_pipe[1], &ch, 1);
+ {
+ const char ch = 'x';
+ gssize c;
+
+ do
+ c = write (priv->cancel_pipe[1], &ch, 1);
+ while (c == -1 && errno == EINTR);
+ }
G_UNLOCK(cancellable);
if (cancel)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]