On Mon, Oct 18, 1999 at 07:14:03 +0000, Bernhard Rieder wrote: > When calling mktemp I always get a segfault. This short program was used > for testing. > > #include <stdlib.h> > > char *template = "/tmp/tmpfileXXXXXX"; > > int main () { > return printf("%s\n", mktemp(template)); > }
Quoting the fine manual `info libc "Temporary Files"': : *Note:* Because `mktemp' and `mkstemp' modify the template string, :you _must not_ pass string constants to them. String constants are :normally in read-only storage, so your program would crash when `mktemp' or :`mkstemp' tried to modify the string. > $ gcc -o test test.c As a workaround, you can compile -fwritable-strings. The proper solution is to ensure that *template is writable; there's bound to be a clean way to do that but I don't have one handy (except via malloc and strcpy). HTH, Ray -- J.H.M. Dassen | RUMOUR Believe all you hear. Your world may [EMAIL PROTECTED] | not be a better one than the one the blocks | live in but it'll be a sight more vivid. | - The Hipcrime Vocab by Chad C. Mulligan