[vlc-devel] [PATCHv3 01/12] add a new type of module: vlc_renderer

Rémi Denis-Courmont remi at remlab.net
Thu Mar 31 12:42:14 CEST 2016


Le 2016-03-31 10:16, Steve Lhomme a écrit :

>>> +bool
>>> +vlc_renderer_equals(vlc_renderer *p_renderer, const char 
>>> *psz_renderer)
>>
>> Again: don´t do that. This function does not work and it never will.
>>
>>> +{
>>> +    assert(p_renderer->target.psz_protocol != NULL
>>> +        && p_renderer->target.psz_host != NULL);
>>> +
>>> +    vlc_url_t url;
>>> +    vlc_UrlParse(&url, psz_renderer);
>>> +    if (url.psz_protocol == NULL || url.psz_host == NULL)
>>> +    {
>>> +        vlc_UrlClean(&url);
>>> +        return false;
>>> +    }
>>> +    const char *psz_option1 = p_renderer->target.psz_option != 
>>> NULL
>>> +                            ? p_renderer->target.psz_option : "";
>>> +    const char *psz_option2 = url.psz_option != NULL ? 
>>> url.psz_option : "";
>>> +    bool b_ret = !strcmp(p_renderer->target.psz_protocol,
>>> url.psz_protocol) +              && 
>>> !strcmp(p_renderer->target.psz_host,
>>> url.psz_host) +              && !strcmp(psz_option1, psz_option2)
>>> +              && p_renderer->target.i_port == url.i_port;
>>> +    vlc_UrlClean(&url);
>>> +    return b_ret;
>>> +}
>
> So the solution is to copy all these lines everywhere we need them ?

No. The solution is to not depend on uniform resource comparison.

> With possible bugs are at every different copy ?

This function even fails to compare URLs correctly, let alone compare 
actual resources.

> And yes it works as it is and we use it.

Except that is impossible. There are no defined methods to compare 
uniform resources for equivalence/equality; the exact semantics are an 
implementation detail of the respective origin server.

-- 
Rémi Denis-Courmont
http://www.remlab.net/


More information about the vlc-devel mailing list