This is simpler and more readable.
end = strchr(arg, ')');
if (!end)
goto out_free_expr;
- arg2 = (char *)calloc(1, end - arg + 1);
- if (!arg2)
+ arg2 = my_strndup(arg, end - arg);
goto out_free_expr;
- memcpy(arg2, arg, end - arg);
- arg2[end-arg] = '\0';
expr->arg_len = end - arg;
expr->arg.str = arg2;
}
if (end != endw) {
expr->arg_len = end - endw - 2;
- expr->arg = malloc(expr->arg_len + 1);
- expr->arg = memcpy(expr->arg, endw + 1, expr->arg_len);
- expr->arg[expr->arg_len] = '\0';
+ expr->arg = my_strndup(endw + 1, expr->arg_len);
}
for (*idx += 1; *(str[*idx]); (*idx)++) {