Quoting Luca Barbato (2014-09-30 02:00:50) > From: Manfred Georg <[email protected]> > > A badly behaving user provided mutex manager (such as that in OpenCV) > may not reset the mutex to NULL on destruction. > > This can cause a problem for a later mutex manager > (which may assert that the mutex is NULL before creating). > > Signed-off-by: Manfred Georg <[email protected]> > Signed-off-by: Luca Barbato <[email protected]> > --- > > Review in patch form: > * We normally use ret for keeping the return value > * We tend to align = > > > libavcodec/utils.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/libavcodec/utils.c b/libavcodec/utils.c > index a472076..204d80b 100644 > --- a/libavcodec/utils.c > +++ b/libavcodec/utils.c > @@ -2317,19 +2317,25 @@ AVHWAccel *av_hwaccel_next(const AVHWAccel *hwaccel) > > int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)) > { > + int ret; > + > if (lockmgr_cb) { > - if (lockmgr_cb(&codec_mutex, AV_LOCK_DESTROY)) > - return -1; > - if (lockmgr_cb(&avformat_mutex, AV_LOCK_DESTROY)) > + void *old_codec_mutex = codec_mutex; > + void *old_avformat_mutex = avformat_mutex; > + > + codec_mutex = NULL; > + avformat_mutex = NULL; > + > + ret = lockmgr_cb(&old_codec_mutex, AV_LOCK_DESTROY); > + if (lockmgr_cb(&old_avformat_mutex, AV_LOCK_DESTROY) || ret) > return -1; > } > > lockmgr_cb = cb; > > if (lockmgr_cb) { > - if (lockmgr_cb(&codec_mutex, AV_LOCK_CREATE)) > - return -1; > - if (lockmgr_cb(&avformat_mutex, AV_LOCK_CREATE)) > + ret = lockmgr_cb(&codec_mutex, AV_LOCK_CREATE); > + if (lockmgr_cb(&avformat_mutex, AV_LOCK_CREATE) || ret)
What's the point of creating the lavf lock, if the lavc one failed? The current code does not do that. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
