<html><head></head><body>Calling it in the DLL is UB if the thread has no CRT or the wrong CRT. As stated like 7 times already <br><br><div class="gmail_quote">Le 24 mai 2019 11:35:12 GMT+03:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">On 2019-05-24 10:04, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">If you don't have the right free inside the EXE, you cannot call LibVLC <br></blockquote><br>I said you do the free *inside the DLL* in order to make it work.<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">directly as already explained several times. So it's moot whether you <br>have libvlc_free() or not.<br><br>Le 24 mai 2019 10:44:11 GMT+03:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<br><br>    On 2019-05-24 9:36, Rémi Denis-Courmont wrote:<br><br>        I don't know what point you are trying to make here. Nobody<br>        questioned<br>        that mismatched heap allocators would crash. Of course they would.<br><br>        The problem is that if you can't get the right free() function,<br>        then you<br>        can't call libvlc_free().<br><br><br>    Yes, you can get the right free(), if the free() call is done inside the<br>    DLL and not the EXE. It was possible before you removed libvlc_free().<br>    It was even documented as such.<br><br>    Now this trivial use case is not even possible with current state of<br>    libvlc. The host cannot reliably release the memory it is given.<br><br>       At that point, the code is probably already UB<br><br>        even before freeing the allocation either way.<br><br>        Le 24 mai 2019 09:37:20 GMT+03:00, Steve Lhomme<br>        <robux4@ycbcr.xyz> a écrit :<br><br>        On 2019-05-24 7:44, Steve Lhomme wrote:<br><br>        On 2019-05-24 7:25, Steve Lhomme wrote:<br><br>        On 2019-05-23 17:11, Rémi Denis-Courmont wrote:<br><br>        Le torstaina 23. toukokuuta 2019, 13.57.32 EEST Steve<br>        Lhomme a écrit :<br><br>        Here's another one: we could decide to rewrite<br>        libvlc in C++ and keep<br>        the same ABI. Does that mean we would have to forced<br>        libvlc hosts to<br>        call "delete psz-str" because we don't feel like<br>        keeping<br>        libvlc_free() ?<br><br><br>        You would have to keep using malloc() otherwise you<br>        would break the<br>        existing<br>        ABI 3.0 or 4.0 anyway that says you can use free().<br><br><br>        That's indeed a problem. I think the free() option should<br>        not have<br>        been there in the first place. I would rather vote to remove<br>        this option.<br><br>        For example we could decide that for performance reasons we<br>        allocate<br>        using aligned_alloc(). On some system that requires an<br>        aligned_free().<br>        We cannot do that if we allow free() of a particular runtime.<br><br><br>        Another use case: building libvlc/vlc with allocation tooling,<br>        redirecting malloc/free to debug leaks. Calling free() outside<br>        of libvlc<br>        with memory allocated this will likely crash or report errors<br>        when a<br>        legitimate free() is done. We should not tie our hands by allowing<br>        free() at all.<br><br><br>        Attached is a quick example of a library done incorrectly:<br><br>        The EXE links with the *debug* DLL C runtime, as most people<br>        would use<br>        while debugging their code.<br><br>        The DLL links with the *standard* DLL C runtime, as a<br>        distributed DLL<br>        would use.<br><br>        Calling free() on the memory returned by the DLL crashes with a heap<br>        allocation error. That doesn't happen is the free() is done in<br>        the DLL.<br><br><br>        -- <br>        Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez<br>        excuser<br>        ma brièveté.<hr>        vlc-devel mailing list<br>        To unsubscribe or modify your subscription options:<br>        <a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><hr>    vlc-devel mailing list<br>    To unsubscribe or modify your subscription options:<br>    <a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br><br><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser <br>ma brièveté.<hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>