On 8/5/22 7:13 PM, jfondren wrote:
On Friday, 5 August 2022 at 22:51:07 UTC, Don Allen wrote:
My theory: because gc_protect2 is never referenced, I'm guessing that the compiler is optimizing away the storage of the returned pointer, the supporting evidence being what I said in the previous paragraph. Anyone have a better idea?

A local variable definitely isn't enough: https://forum.dlang.org/thread/xchnfzvpmxgytqprb...@forum.dlang.org

This package came of it: https://code.dlang.org/packages/keepalive


Yes, but I will warn you, the compilers are smart buggers. I think someone came up with a case where this still doesn't keep it alive (been a while since I made that).

The only true solution is to use `GC.addRoot` on the string and `GC.removeRoot` when you are done.

-Steve

Reply via email to