Remove a whole bunch of non-sensical vlc_object_hold()
In one case (noted by Erwan Tulou), this also fixes a large leak. There is _absolutely_ no point in holding an object and releasing it immediately. Holding an object only makes sense if: - the object cannot vanish while calling vlc_object_hold(), and - either: - the object could have otherwise vanished before vlc_object_release(), or - there is no way to avoid the (otherwise not needed) vlc_object_hold() because it comes from another component. Conversely, it makes no sense to hold an object, if: - it could vanish already while calling hold (race condition) -> this is *invalid* and might crash, - there is already a valid reference to the object throughout. I don't know in which case that code was, but the popup menu definitely does invalid object access in some cases. For instance: - start playing a single video, - seek to a few seconds before the end, - open the popup menu, go to video / deinterlace, - wait for the video to finish and the playlist to stop, - click on "X" from the deinterlace submenu. Oops.
Showing
Please register or sign in to comment