[mutter/gnome-3-34] x11: Do not trust there is task in error paths
- From: Robert Mader <rmader src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-34] x11: Do not trust there is task in error paths
- Date: Sun, 19 Apr 2020 20:02:07 +0000 (UTC)
commit ebfe5e44c22b462d47a2c877a8a3455386357204
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Apr 15 10:46:34 2020 +0200
x11: Do not trust there is task in error paths
Flushing the X11 selection output stream may happen synchronously or
implicitly, in which case there is not a task to complete. Check there
is actually a task before returning errors. We additionally set the
pipe_error flag, so future operations will fail with an error, albeit
with a more generic message.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1198
(cherry picked from commit 1909977a6787d6e06d4931df158b821f6fb35ad1)
src/x11/meta-x11-selection-output-stream.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
---
diff --git a/src/x11/meta-x11-selection-output-stream.c b/src/x11/meta-x11-selection-output-stream.c
index aa2b78c47..4ccebd2ab 100644
--- a/src/x11/meta-x11-selection-output-stream.c
+++ b/src/x11/meta-x11-selection-output-stream.c
@@ -286,13 +286,16 @@ meta_x11_selection_output_stream_perform_flush (MetaX11SelectionOutputStream *st
priv->delete_pending = FALSE;
priv->pipe_error = TRUE;
- XGetErrorText (xdisplay, error_code, error_str, sizeof (error_str));
- g_task_return_new_error (priv->pending_task,
- G_IO_ERROR,
- G_IO_ERROR_BROKEN_PIPE,
- "Failed to flush selection output stream: %s",
- error_str);
- g_clear_object (&priv->pending_task);
+ if (priv->pending_task)
+ {
+ XGetErrorText (xdisplay, error_code, error_str, sizeof (error_str));
+ g_task_return_new_error (priv->pending_task,
+ G_IO_ERROR,
+ G_IO_ERROR_BROKEN_PIPE,
+ "Failed to flush selection output stream: %s",
+ error_str);
+ g_clear_object (&priv->pending_task);
+ }
}
else if (priv->pending_task && priv->data->len == 0 && !priv->delete_pending)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]