C API / const char *text / std.string.toStringz pointer is always NULL on C side

Robert M. Münch robert.muench at saphirion.com
Sat May 19 17:33:08 UTC 2018


On 2018-05-18 14:42:17 +0000, Adam D. Ruppe said:

> On Friday, 18 May 2018 at 14:06:11 UTC, Robert M. Münch wrote:
>> So, having a wrong return-type here, resulted in the const char *text 
>> parameter always being NULL. Not sure I understand the relation but 
>> looks strange to me... at least not very obvious.
> 
> A value struct return is actually done via a hidden pointer parameter 
> (so the function can construct it in-place for the caller, a standard 
> optimization), so it just shifted all the other arguments to the side, 
> causing one of those 0's to be interpreted as the string.

Wow, thanks for the clear explanation. Without very deep internal 
knowhow I don't think anyone is able to ever guess this.

Is this somehwere documented?

-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster



More information about the Digitalmars-d-learn mailing list