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