glib-aux/trivial: add code comment to nm_g_source_destroy_and_unref() about g_source_destroy()

I think this is non-obvious API, and should be pointed out. As we don't
really have a good place for this comment, the place is a bit unmotivated.
Still, add a comment.
This commit is contained in:
Thomas Haller 2021-06-24 11:23:18 +02:00
parent 3706118ab1
commit 5e448f2339
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -1610,6 +1610,19 @@ nm_g_variant_builder_add_sv_str(GVariantBuilder *builder, const char *key, const
static inline void
nm_g_source_destroy_and_unref(GSource *source)
{
/* Note that calling g_source_destroy() on a currently attached source,
* will destroy the user-data of the callback right away (and not only
* during the last g_source_unref()).
*
* It also means, that if the user data itself has the reference to the
* source, then this will lead to crash:
*
* g_source_destroy(user_data->my_source);
* // ups, user_data was destroyed (if source was attached).
* g_source_unref(user_data->my_source);
*
* nm_g_source_destroy_and_unref() and nm_clear_g_source_inst() does not
* suffer from this problem. */
g_source_destroy(source);
g_source_unref(source);
}