diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c index b1083c1bef2b50fdf5310b8673aa7c5f90577278..9eac5cafcea52260339c30a45da03e29fac68f21 100644 --- a/modules/module-si-standard-link.c +++ b/modules/module-si-standard-link.c @@ -429,7 +429,7 @@ si_standard_link_enable_active (WpSessionItem *si, WpTransition *transition) WpSiStandardLink *self = WP_SI_STANDARD_LINK (si); g_autoptr (WpSessionItem) si_out = NULL; g_autoptr (WpSessionItem) si_in = NULL; - WpSiAcquisition *out_acquisition, *in_acquisition; + WpSiAcquisition *out_acquisition = NULL, *in_acquisition = NULL; if (!wp_session_item_is_configured (si)) { wp_transition_return_error (transition, @@ -438,12 +438,19 @@ si_standard_link_enable_active (WpSessionItem *si, WpTransition *transition) return; } - /* acquire */ + /* make sure in/out items are valid */ si_out = g_weak_ref_get (&self->out_item); si_in = g_weak_ref_get (&self->in_item); + if (!si_out || !si_in) { + wp_transition_return_error (transition, + g_error_new (WP_DOMAIN_LIBRARY, WP_LIBRARY_ERROR_INVARIANT, + "si-standard-link: in/out items are not valid anymore")); + return; + } + + /* acquire */ out_acquisition = wp_si_port_info_get_acquisition (WP_SI_PORT_INFO (si_out)); in_acquisition = wp_si_port_info_get_acquisition (WP_SI_PORT_INFO (si_in)); - if (out_acquisition && in_acquisition) self->n_async_ops_wait = 2; else if (out_acquisition || in_acquisition)