Rémi Bernon (@rbernon) commented about dlls/winegstreamer/wg_muxer.c:
+static void muxer_destroy(struct wg_muxer *muxer) +{ + pthread_cond_destroy(&muxer->cond); + pthread_mutex_destroy(&muxer->mutex); + if (muxer->buffer) + muxer_free_buffer(muxer); + if (muxer->output_queue) + gst_atomic_queue_unref(muxer->output_queue); + if (muxer->my_sink) + gst_object_unref(muxer->my_sink); + if (muxer->container) + { + gst_element_set_state(muxer->container, GST_STATE_NULL); + gst_object_unref(muxer->container); + } + free(muxer); I think we prefer avoiding ifs in the destructors and keep that logic only in the constructor error path. I know this may feel like duplication but it also allow you to assume that once successfully constructed, none of these fields can be NULL.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/3737#note_44531