Either I'm confused or the gc is

Ali Çehreli acehreli at yahoo.com
Sun Nov 15 21:46:52 UTC 2020


On 11/15/20 10:43 AM, Steven Schveighoffer wrote:

 > I also did not see the toStringz as a problem
 > when I reviewed.

While I have everbody's attention, :) toStringz will come up during one 
of my DConf presentations. I will claim that it is safe to pass to a C 
function for their immediate consumption (but they can't save the pointer).

So, I will claim that the following is safe and no GC collection on 
another thread can mess this up. (The C side is not allowed to store for 
later use but they are taking the pointer into a local variable on their 
function call stack.)

nothrow extern(C) void bar(const(char) ** name) {
   // ...
   *name = makeString(42).toStringz;
   // ...
}

My claim is based on my understanding on the following thread. (Thank 
you, Rikki Cattermole.)

   https://forum.dlang.org/thread/rn3ii0$jjj$1@digitalmars.com

Ali



More information about the Digitalmars-d mailing list