Getting a safe path for a temporary file

Shriramana Sharma not.sure.why.a.mail.id.is.needed.even.if.invalid at gmail.com
Mon Oct 23 01:41:57 UTC 2017


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";

Hmm I was wondering if I needed it to be static, and verily, 
substituting:

char[] name = "/tmp/XXXXXX".dup;

instead gives a proper output *some* of the time but mostly gives 
the error:

std.exception.ErrnoException at std/stdio.d(630):  (Bad file 
descriptor)
----------------
??:? @safe shared(core.stdc.stdio._IO_FILE)* 
std.exception.errnoEnforce!(shared(core.stdc.stdio._IO_FILE)*, 
"std/stdio.d", 
630uL).errnoEnforce(shared(core.stdc.stdio._IO_FILE)*, lazy 
immutable(char)[]) [0x44bd31]
??:? @trusted void std.stdio.File.fdopen(int, const(char[]), 
immutable(char)[]) [0x44294a]
??:? @safe void std.stdio.File.fdopen(int, const(char[])) 
[0x4428b1]
??:? <src>.TempFile <src>.tempFileOpen() [0x43d4fd]
??:? _Dmain [0x43d5ce]

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


More information about the Digitalmars-d-learn mailing list