mjit.c: prevent memory leak on realloc failure

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-07-25 12:33:38 +00:00
parent 3a1e3d35e2
commit f10582d8e7

7
mjit.c
View File

@ -327,15 +327,18 @@ form_args(int num, ...)
va_list argp; va_list argp;
size_t len, n; size_t len, n;
int i; int i;
char **args, **res; char **args, **res, **tmp;
va_start(argp, num); va_start(argp, num);
res = NULL; res = NULL;
for (i = len = 0; i < num; i++) { for (i = len = 0; i < num; i++) {
args = va_arg(argp, char **); args = va_arg(argp, char **);
n = args_len(args); n = args_len(args);
if ((res = (char **)realloc(res, sizeof(char *) * (len + n + 1))) == NULL) if ((tmp = (char **)realloc(res, sizeof(char *) * (len + n + 1))) == NULL) {
free(res);
return NULL; return NULL;
}
res = tmp;
MEMCPY(res + len, args, char *, n + 1); MEMCPY(res + len, args, char *, n + 1);
len += n; len += n;
} }