summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-10 01:07:04 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-10 01:07:04 +0000
commitb30b1c13addd4cdfeefb57a1b9e6cdf4be0f66b6 (patch)
treeac0902a65609b286abb01597a51324a8cb44fff4
parent72ebd85559e82b2accce6b24b3307845859f0497 (diff)
mjit.c: binary mode
* mjit.c (convert_unit_to_func): write source code in binary mode. not conversion is needed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--mjit.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/mjit.c b/mjit.c
index 561ff8304d..fa12a3f7d6 100644
--- a/mjit.c
+++ b/mjit.c
@@ -757,6 +757,11 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
int c_file_len = (int)sizeof(c_file_buff);
static const char c_ext[] = ".c";
static const char so_ext[] = DLEXT;
+ const int access_mode =
+#ifdef O_BINARY
+ O_BINARY|
+#endif
+ O_WRONLY|O_EXCL|O_CREAT;
c_file_len = sprint_uniq_filename(c_file_buff, c_file_len, unit->id, MJIT_TMP_PREFIX, c_ext);
if (c_file_len >= (int)sizeof(c_file_buff)) {
@@ -770,7 +775,7 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
memcpy(&so_file[c_file_len - sizeof(c_ext)], so_ext, sizeof(so_ext));
sprintf(funcname, "_mjit%d", unit->id);
- fd = rb_cloexec_open(c_file, O_WRONLY|O_EXCL|O_CREAT, 0600);
+ fd = rb_cloexec_open(c_file, access_mode, 0600);
if (fd < 0 || (f = fdopen(fd, "w")) == NULL) {
int e = errno;
if (fd >= 0) (void)close(fd);