diff --git a/src/main.cpp b/src/main.cpp index 5930a43..5c51ef2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1911,12 +1911,14 @@ Literal exec(vector in, bool executingFunction) { if (l.args.size() < 1) { error("Could not find all arguments required for Endfun inbuilt"); } - if (holds_alternative(l.args[0])) { - fnArgs.push_back(get(l.args[0])); - } else if (holds_alternative(l.args[0])) { - fnArgs.push_back(variables[get(l.args[0]).listName]); - } else { - error("First argument of pusharg must be a literal or list reference"); + for (int k = 0; k < l.args.size(); k++) { + if (holds_alternative(l.args[k])) { + fnArgs.push_back(get(l.args[k])); + } else if (holds_alternative(l.args[k])) { + fnArgs.push_back(variables[get(l.args[k]).listName]); + } else { + error("First argument of pusharg must be a literal or list reference"); + } } break; /* diff --git a/tests/functions.grnd b/tests/functions.grnd index 19c0f51..25db893 100644 --- a/tests/functions.grnd +++ b/tests/functions.grnd @@ -38,4 +38,12 @@ stdlnout $tmp add 1 $counter &counter jump %loopstart @loopend -end 0 + +fun -int !doSomething -int &a -string &b + println $a + println $b + return 0 +endfun + +pusharg 432 "dingle" +!doSomething &ret