aboutsummaryrefslogtreecommitdiffstats
path: root/mjit.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2019-12-01 01:35:30 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2019-12-01 01:35:31 -0800
commit8a677a6e80b3b7e1f52073b362083a78eb87397f (patch)
tree3c5b25f9653d85da83b3ac1b3c499adfa3d5c943 /mjit.c
parent3e2753ad2e0b643f5c731fb162f5805d82435032 (diff)
downloadruby-8a677a6e80b3b7e1f52073b362083a78eb87397f.tar.gz
Workaround missing strndup on Windows
https://ci.appveyor.com/project/ruby/ruby/builds/29230976/job/c910t37313edb97k
Diffstat (limited to 'mjit.c')
-rw-r--r--mjit.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/mjit.c b/mjit.c
index 5749f21872..f062b4b3a2 100644
--- a/mjit.c
+++ b/mjit.c
@@ -700,6 +700,16 @@ start_worker(void)
return true;
}
+// There's no strndup on Windows
+static char*
+ruby_strndup(char *str, size_t n)
+{
+ char *ret = xmalloc(n + 1);
+ memcpy(ret, str, n);
+ ret[n] = '\0';
+ return ret;
+}
+
// Convert "foo bar" to {"foo", "bar", NULL} array. Caller is responsible for
// freeing a returned buffer and its elements.
static char **
@@ -716,7 +726,7 @@ split_flags(char *flags)
}
else {
if (next > flags)
- buf[i++] = strndup(flags, next - flags);
+ buf[i++] = ruby_strndup(flags, next - flags);
next++; // skip space
}
}