Philip Withnall 60e06dd828 gdbusconnection: Improve refcount handling of timeout source
The ref on the timeout source owned by `SendMessageData` was being
dropped just after attaching the source to the main context, leaving it
unowned in that struct. That meant the only ref on the source was held
by the `GMainContext` it was attached to.

This ref was dropped when returning `G_SOURCE_REMOVE` from
`send_message_with_reply_timeout_cb()`. Before that happens,
`send_message_data_deliver_error()` is called, which normally calls
`send_message_with_reply_cleanup()` and destroys the source.

However, if `send_message_data_deliver_error()` is called when the
message has already been delivered, calling
`send_message_with_reply_cleanup()` will be skipped. This leaves the
source pointer in `SendMessageData` dangling, which will cause problems
when `g_source_destroy()` is subsequently called on it.

I’m not sure if it’s possible in practice for this situation to occur,
but the code certainly does nothing to prevent it, and it’s easy enough
to avoid by keeping a strong ref on the source in `SendMessageData`.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #1264
2023-05-09 18:10:16 +01:00
..
2023-04-20 13:10:00 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-05-18 14:01:43 +00:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-06-23 10:46:45 +01:00
2022-10-13 20:53:56 -04:00
2023-01-16 08:19:23 -05:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00
2022-10-13 20:53:56 -04:00