[mutter/gnome-3-24] backends: Set error when opening /sys file fails
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-24] backends: Set error when opening /sys file fails
- Date: Fri, 14 Jul 2017 10:40:13 +0000 (UTC)
commit 0159efe34bfda8acd58aab31ff49b6012e5ed700
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Jul 12 22:36:42 2017 +0200
backends: Set error when opening /sys file fails
The caller in clutter really expects an error if fd==-1, so make
sure we set one here. Otherwise we get a nice crash in addition to
the failure to open the /sys file. Also, retry on EINTR.
https://bugzilla.gnome.org/show_bug.cgi?id=784881
src/backends/native/meta-launcher.c | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c
index 4a9a727..90b4b98 100644
--- a/src/backends/native/meta-launcher.c
+++ b/src/backends/native/meta-launcher.c
@@ -188,9 +188,22 @@ on_evdev_device_open (const char *path,
/* Allow readonly access to sysfs */
if (g_str_has_prefix (path, "/sys/"))
{
- fd = open (path, flags);
- if (fd >= 0)
- g_hash_table_add (self->sysfs_fds, GINT_TO_POINTER (fd));
+ do
+ {
+ fd = open (path, flags);
+ }
+ while (fd < 0 && errno == EINTR);
+
+ if (fd < 0)
+ {
+ g_set_error (error,
+ G_FILE_ERROR,
+ g_file_error_from_errno (errno),
+ "Could not open /sys file: %s: %m", path);
+ return -1;
+ }
+
+ g_hash_table_add (self->sysfs_fds, GINT_TO_POINTER (fd));
return fd;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]