aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'io.c')
-rw-r--r--io.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/io.c b/io.c
index b8964e8606..0f6afb7bc4 100644
--- a/io.c
+++ b/io.c
@@ -5833,6 +5833,7 @@ static VALUE
rb_file_open_generic(VALUE io, VALUE filename, int oflags, int fmode,
const convconfig_t *convconfig, mode_t perm)
{
+ VALUE pathv;
rb_io_t *fptr;
convconfig_t cc;
if (!convconfig) {
@@ -5848,8 +5849,15 @@ rb_file_open_generic(VALUE io, VALUE filename, int oflags, int fmode,
MakeOpenFile(io, fptr);
fptr->mode = fmode;
fptr->encs = *convconfig;
- fptr->pathv = rb_str_new_frozen(filename);
- fptr->fd = rb_sysopen(fptr->pathv, oflags, perm);
+ pathv = rb_str_new_frozen(filename);
+#ifdef O_TMPFILE
+ if (!(oflags & O_TMPFILE)) {
+ fptr->pathv = pathv;
+ }
+#else
+ fptr->pathv = pathv;
+#endif
+ fptr->fd = rb_sysopen(pathv, oflags, perm);
io_check_tty(fptr);
if (fmode & FMODE_SETENC_BY_BOM) io_set_encoding_by_bom(io);