Getting a safe path for a temporary file

Ali Çehreli acehreli at yahoo.com
Wed Oct 25 00:35:29 UTC 2017


On 10/22/2017 06:41 PM, Shriramana Sharma wrote:
 > On Sunday, 22 October 2017 at 15:21:37 UTC, Shriramana Sharma wrote:
 >> For my program right now I'm using a souped-up version using a static
 >> array:
 >>
 >>     char[20] name = "/tmp/XXXXXX";

Literal strings have a '\0' attached, which does not become a part of 
the slice.

 > Hmm I was wondering if I needed it to be static, and verily, 
substituting:
 >
 > char[] name = "/tmp/XXXXXX".dup;

However, .dup is not be aware of the special literal treatment so it 
does not copy the '\0' character.

 > Is it because the D slice is subject to relocation and C is occasionally
 > not able to access the proper pointer?

As long as you have a reference on the D side, the slice will remain 
valid. The actual issue is the missing '\0'. So, consider toStringz in 
this case:

   https://dlang.org/library/std/string/to_stringz.html

Ali



More information about the Digitalmars-d-learn mailing list