Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mono/metadata/w32file-unix.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/mono/metadata/w32file-unix.c b/mono/metadata/w32file-unix.c
index 819bbba6818..5430744f9d1 100644
--- a/mono/metadata/w32file-unix.c
+++ b/mono/metadata/w32file-unix.c
@@ -282,17 +282,23 @@ _wapi_open (const gchar *pathname, gint flags, mode_t mode)
located_filename = mono_portability_find_file (pathname, FALSE);
if (located_filename == NULL) {
MONO_ENTER_GC_SAFE;
- fd = open (pathname, flags, mode);
+ do {
+ fd = open (pathname, flags, mode);
+ } while (fd == -1 && errno == EINTR);
MONO_EXIT_GC_SAFE;
} else {
MONO_ENTER_GC_SAFE;
- fd = open (located_filename, flags, mode);
+ do {
+ fd = open (located_filename, flags, mode);
+ } while (fd == -1 && errno == EINTR);
MONO_EXIT_GC_SAFE;
g_free (located_filename);
}
} else {
MONO_ENTER_GC_SAFE;
- fd = open (pathname, flags, mode);
+ do {
+ fd = open (pathname, flags, mode);
+ } while (fd == -1 && errno == EINTR);
MONO_EXIT_GC_SAFE;
if (fd == -1 && (errno == ENOENT || errno == ENOTDIR) && IS_PORTABILITY_SET) {
gint saved_errno = errno;
@@ -304,7 +310,9 @@ _wapi_open (const gchar *pathname, gint flags, mode_t mode)
}
MONO_ENTER_GC_SAFE;
- fd = open (located_filename, flags, mode);
+ do {
+ fd = open (located_filename, flags, mode);
+ } while (fd == -1 && errno == EINTR);
MONO_EXIT_GC_SAFE;
g_free (located_filename);
}