<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>