[vlc-devel] [vlc-commits] Remove libvlc_free

Steve Lhomme robux4 at ycbcr.xyz
Fri May 24 07:44:15 CEST 2019


On 2019-05-24 7:25, Steve Lhomme wrote:
> On 2019-05-23 17:11, Rémi Denis-Courmont wrote:
>> Le torstaina 23. toukokuuta 2019, 13.57.32 EEST Steve Lhomme a écrit :
>>> Here's another one: we could decide to rewrite libvlc in C++ and keep
>>> the same ABI. Does that mean we would have to forced libvlc hosts to
>>> call "delete psz-str" because we don't feel like keeping libvlc_free() ?
>>
>> You would have to keep using malloc() otherwise you would break the 
>> existing
>> ABI 3.0 or 4.0 anyway that says you can use free(). 
> 
> That's indeed a problem. I think the free() option should not have been 
> there in the first place. I would rather vote to remove this option.
> 
> For example we could decide that for performance reasons we allocate 
> using aligned_alloc(). On some system that requires an aligned_free(). 
> We cannot do that if we allow free() of a particular runtime.

Another use case: building libvlc/vlc with allocation tooling, 
redirecting malloc/free to debug leaks. Calling free() outside of libvlc 
with memory allocated this will likely crash or report errors when a 
legitimate free() is done. We should not tie our hands by allowing 
free() at all.

I also think we may differentiate between the types to free, like 
libvlc_free_string(). But I think that's all we currently share to free.

>  >Not only that but delete
>> would bring rather interesting considerations with RTTI.
>>
>> If you want to abstract that away, you need case-specific release 
>> functions
>> like Romain pointed out - not libvlc_free().
> 
> It turns out that in many cases it would not be libvlc_free().
> 
>>> That would force every host app to embed a C++ runtime just because
>>> libvlc happens to be written in C++.
>>
>> That example is absurd. In general, just switching LibVLC to C++ 
>> breaks the
>> ABI. 
> 
> The extern "C" ABI remains the same, even if it's coded in C++ underneath.
> 
>  > Whether it requires the application to have a C++ runtime or not would
>> depend on the platform. In many cases, it actually would indeed need a 
>> C++
>> runtime regardless of libvlc_free().
> 
> Yes, running a C++ libvlc will require a C++ runtime. That doesn't mean 
> the libvlc host has to deal with it. Again, in Windows this is hidden 
> when loading the DLL (dunno how .so loading works). There is no reason 
> to force the host to call the C++ delete. Just like there is no reason 
> to force the host to call the C free().
> _______________________________________________
> 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