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

Steve Lhomme robux4 at ycbcr.xyz
Wed May 22 10:28:06 CEST 2019


On 2019-05-22 10:03, Rémi Denis-Courmont wrote:
> The app cannot even load LibVLC if it does not agree on the CRT or does 

The LoadLibrary() of Windows loads the depending DLLs, including the 
language runtime this DLL needs to run. For example libvlc.dll will load 
msvcrt.dll automatically.

That doesn't mean the language calling LoadLibray() has to use this CRT 
at all.

What you are proposing is that an app using libvlc.dll must also do a 
LoadLibrary(msvcrt.dll), GetProcAddress(free) so it can call free. It 
becomes impossible is the C runtime is linked statically. It's not 
possible to do GetProcAddress(free) as it's not exposed by libvlc.dll.

> not use any CRT. The question therefore makes no sense: the app already 
> has free() and other tied functions available from the agreed-upon CRT.
> 
> libvlc_free() is just a foot gun that makes it look like you don't need 
> to care about the CRT, when you in fact do.

No, that's a way for any language to call the proper free() without 
having to deal with a C runtime at all.

> Le 22 mai 2019 10:59:35 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
> 
>     On 2019-05-22 9:49, Rémi Denis-Courmont wrote:
> 
>         As I *already* noted, and as is widely documented outside.
> 
>         On most platforms, C runtime is per process. On Windows, it's per
>         thread. Either way, the consequence is that the mere fact of
>         calling the
>         CRT from within LibVLC functions ties the CRT of LibVLC and the
>         calling
>         code.
> 
> 
>     I agree with that. It doesn't mean the host app has to take care of it
>     if the language doesn't know about using C code and the libvlc DLL
>     loading is done manually. libvlc_free() allowed this use.
> 
>     free() is not exposed by libvlc, so how would an external app not
>     written in C know where to find that free() call ? (which hopefully is
>     not a macro to another runtime call)
> 
>         Le 22 mai 2019 10:20:06 GMT+03:00, Steve Lhomme
>         <robux4 at ycbcr.xyz> a écrit :
> 
>         On 2019-05-20 14:15, Rémi Denis-Courmont wrote:
> 
>         Hi,
> 
>         There are no changes to the fact that LibVLC "leaks" the C runtime.
> 
> 
>         Where does it leak the C runtime ? I can understand the C ABI,
>         but not
>         the C runtime. It's possible to load the DLL just knowing the
>         ABI and
>         never touch the runtime or have to know about it.
> 
>         There's a difference between being tied to a C runtime and having to
>         link to it from any other language using libvlc.
> 
>         On most systems, you cannot mix runtimes in a process at all due to
>         namespace conflicts. On Windows, you have to stick to Win32 API
>         calls on
>         threads created by another runtime - something LibVLC does not do.
> 
>         Le 20 mai 2019 15:08:39 GMT+03:00, Steve Lhomme
>         <robux4 at ycbcr.xyz> a écrit :
> 
>         On 2019-05-20 13:24, Rémi Denis-Courmont wrote:
> 
>         Hi,
> 
>         No changes there.
> 
> 
>         I can see a patch makind changes in the code. You'll have to be more
>         specific.
> 
>         This is consistent with the existing doc and the reality.
> 
> 
>         You removed the documentation that specifically explained one
>         case where
>         using libvlc_free() was actually necessary.
> 
>         This comes from vlc.git.
>         -- 
>         Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>         excuser
>         ma brièveté.
>         ------------------------------------------------------------------------
>         vlc-devel mailing list
>         To unsubscribe or modify your subscription options:
>         https://mailman.videolan.org/listinfo/vlc-devel
>         ------------------------------------------------------------------------
>         vlc-devel mailing list
>         To unsubscribe or modify your subscription options:
>         https://mailman.videolan.org/listinfo/vlc-devel
> 
> 
>         -- 
>         Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>         excuser
>         ma brièveté.
>         ------------------------------------------------------------------------
>         vlc-devel mailing list
>         To unsubscribe or modify your subscription options:
>         https://mailman.videolan.org/listinfo/vlc-devel
>         ------------------------------------------------------------------------
>         vlc-devel mailing list
>         To unsubscribe or modify your subscription options:
>         https://mailman.videolan.org/listinfo/vlc-devel
> 
> 
>         -- 
>         Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>         excuser
>         ma brièveté.
>         ------------------------------------------------------------------------
>         vlc-devel mailing list
>         To unsubscribe or modify your subscription options:
>         https://mailman.videolan.org/listinfo/vlc-devel
> 
>     ------------------------------------------------------------------------
>     vlc-devel mailing list
>     To unsubscribe or modify your subscription options:
>     https://mailman.videolan.org/listinfo/vlc-devel
> 
> 
> -- 
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser 
> ma brièveté.
> 
> _______________________________________________
> 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