[vlc-devel] [PATCH] mkv: ebml_dispatcher: fix ebmlid check

Steve Lhomme robux4 at ycbcr.xyz
Thu Jun 18 12:32:02 CEST 2020


LGTM apart from s/processer/processor/

On 2020-06-18 11:44, Alexandre Janniaux wrote:
> std::lower_bound doesn't return an iterator to the std::end value if the
> element is not found, but like its name says, to the first value that is
> greater or equal than the value wanted, meaning it could be the next one
> if no processer has been bound to the ebml id sent to this dispatcher.
> 
> Instead of asserting, it should really be checking whether the ebmlid
> matches.
> 
> Regression from c764461180d70d1c9fa81e72cd7ad9d9b289eea6.
> ---
>   modules/demux/mkv/Ebml_dispatcher.hpp | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/modules/demux/mkv/Ebml_dispatcher.hpp b/modules/demux/mkv/Ebml_dispatcher.hpp
> index 8d1e7a60538..985bb4565d6 100644
> --- a/modules/demux/mkv/Ebml_dispatcher.hpp
> +++ b/modules/demux/mkv/Ebml_dispatcher.hpp
> @@ -87,9 +87,11 @@ namespace {
>               _processors.begin(), cit_end, eb
>           );
>   
> -        if (cit != cit_end)
> +        /* Check that the processor is valid and unique. */
> +        if (cit != cit_end &&
> +            cit->p_ebmlid == eb.p_ebmlid &&
> +            (*cit->p_ebmlid == *eb.p_ebmlid))
>           {
> -            assert(cit->p_ebmlid == eb.p_ebmlid || (*cit->p_ebmlid == *eb.p_ebmlid));
>               cit->callback (element, payload);
>               return true;
>           }
> -- 
> 2.27.0
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list