diff options
Diffstat (limited to 'extension/arrayparm.c')
-rw-r--r-- | extension/arrayparm.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/extension/arrayparm.c b/extension/arrayparm.c index ddf1c8c4..281b50a2 100644 --- a/extension/arrayparm.c +++ b/extension/arrayparm.c @@ -41,8 +41,7 @@ */ static NODE * -do_mkarray(tree) -NODE *tree; +do_mkarray(int args) { int ret = -1; NODE *var, *sub, *val; @@ -51,13 +50,9 @@ NODE *tree; if (do_lint && get_curfunc_arg_count() > 3) lintwarn("mkarray: called with too many arguments"); - var = get_argument(tree, 0); - if (var == NULL) - var = stack_ptr[0]; - - var = get_array(var); - sub = get_argument(tree, 1); - val = get_argument(tree, 2); + var = get_array_argument(0, FALSE); + sub = get_scalar_argument(1, FALSE); + val = get_scalar_argument(2, FALSE); printf("var->type = %s\n", nodetype2str(var->type)); printf("sub->type = %s\n", nodetype2str(sub->type)); @@ -69,12 +64,8 @@ NODE *tree; *elemval = dupnode(val); ret = 0; - /* Set the return value */ - set_value(tmp_number((AWKNUM) ret)); - - /* Just to make the interpreter happy */ - return tmp_number((AWKNUM) 0); + return make_number((AWKNUM) ret); } /* dlload --- load new builtins in this library */ @@ -86,5 +77,5 @@ void *dl; { make_builtin("mkarray", do_mkarray, 3); - return tmp_number((AWKNUM) 0); + return make_number((AWKNUM) 0); } |