mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 12:02:04 +00:00
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
This commit is contained in:
parent
ca600973ba
commit
a6ec2b1d42
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user