Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 8806f4f

Browse files
Always check for errors when propagating task values. (#56856)
This could occur if a request is cancelled, without this it might not chain up to the original caller correctly.
1 parent 9ae557d commit 8806f4f

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

shell/platform/linux/fl_basic_message_channel.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,10 @@ G_MODULE_EXPORT FlValue* fl_basic_message_channel_send_finish(
258258
g_return_val_if_fail(g_task_is_valid(result, self), nullptr);
259259

260260
g_autoptr(GTask) task = G_TASK(result);
261-
GAsyncResult* r = G_ASYNC_RESULT(g_task_propagate_pointer(task, nullptr));
261+
GAsyncResult* r = G_ASYNC_RESULT(g_task_propagate_pointer(task, error));
262+
if (r == nullptr) {
263+
return nullptr;
264+
}
262265

263266
g_autoptr(GBytes) message =
264267
fl_binary_messenger_send_on_channel_finish(self->messenger, r, error);

shell/platform/linux/fl_binary_messenger.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,10 @@ static GBytes* send_on_channel_finish(FlBinaryMessenger* messenger,
291291
g_return_val_if_fail(g_task_is_valid(result, self), FALSE);
292292

293293
g_autoptr(GTask) task = G_TASK(result);
294-
GAsyncResult* r = G_ASYNC_RESULT(g_task_propagate_pointer(task, nullptr));
294+
GAsyncResult* r = G_ASYNC_RESULT(g_task_propagate_pointer(task, error));
295+
if (r == nullptr) {
296+
return nullptr;
297+
}
295298

296299
g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
297300
if (engine == nullptr) {

shell/platform/linux/fl_method_channel.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,10 @@ G_MODULE_EXPORT FlMethodResponse* fl_method_channel_invoke_method_finish(
197197
g_return_val_if_fail(g_task_is_valid(result, self), nullptr);
198198

199199
g_autoptr(GTask) task = G_TASK(result);
200-
GAsyncResult* r = G_ASYNC_RESULT(g_task_propagate_pointer(task, nullptr));
200+
GAsyncResult* r = G_ASYNC_RESULT(g_task_propagate_pointer(task, error));
201+
if (r == nullptr) {
202+
return nullptr;
203+
}
201204

202205
g_autoptr(GBytes) response =
203206
fl_binary_messenger_send_on_channel_finish(self->messenger, r, error);

0 commit comments

Comments
 (0)