From 0f0c32f24e9556cf3d605df2891841659e6293f6 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 18 Feb 2018 05:10:52 +0000 Subject: mjit.c: no va_copy * mjit.c (form_args): do not use va_copy, which cannot detect appropriate way to simulate when cross compiling. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- mjit.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'mjit.c') diff --git a/mjit.c b/mjit.c index 9abc27fbe7..a17f61cdcb 100644 --- a/mjit.c +++ b/mjit.c @@ -286,27 +286,21 @@ args_len(char *const *args) static char ** form_args(int num, ...) { - va_list argp, argp2; - size_t len, disp; + va_list argp; + size_t len, n; int i; char **args, **res; va_start(argp, num); - va_copy(argp2, argp); + res = NULL; for (i = len = 0; i < num; i++) { args = va_arg(argp, char **); - len += args_len(args); + n = args_len(args); + REALLOC_N(res, char *, len + n + 1); + MEMCPY(res + len, args, char *, n + 1); + len += n; } va_end(argp); - res = xmalloc((len + 1) * sizeof(char *)); - for (i = disp = 0; i < num; i++) { - args = va_arg(argp2, char **); - len = args_len(args); - memmove(res + disp, args, len * sizeof(char *)); - disp += len; - } - res[disp] = NULL; - va_end(argp2); return res; } -- cgit v1.2.3