diff --git a/src/os_unix.c b/src/os_unix.c index 9fd6436e6f..c27755f952 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -8940,13 +8940,24 @@ mch_create_anon_file(void) fd = shm_open(template, O_CREAT | O_RDWR | O_EXCL, 0600); if (fd >= 0 || errno != EEXIST) - break; } + break; + } // Remove object name from namespace shm_unlink(template); #endif + // Last resort if (fd == -1) - // Last resort - fd = fileno(tmpfile()); - + { + char_u *tempname; + // get a name for the temp file + if ((tempname = vim_tempname('w', FALSE)) == NULL) + { + emsg(_(e_cant_get_temp_file_name)); + return -1; + } + fd = mch_open((char *)tempname, O_CREAT | O_RDWR | O_EXCL, 0600); + mch_remove(tempname); + vim_free(tempname); + } return fd; } diff --git a/src/version.c b/src/version.c index fdf1eb3000..1cf223d181 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1514, /**/ 1513, /**/