@@ -569,9 +569,9 @@ static void FunctionTemplateCallback(const FunctionCallbackInfo<Value>& info) {
569569 iso, info.This ()));
570570
571571 int args_count = info.Length ();
572- ValuePtr thisAndArgs[ args_count + 1 ] ;
572+ std::vector< ValuePtr> thisAndArgs ( args_count + 1 ) ;
573573 thisAndArgs[0 ] = tracked_value (ctx, _this);
574- ValuePtr* args = thisAndArgs + 1 ;
574+ ValuePtr* args = thisAndArgs. data () + 1 ;
575575 for (int i = 0 ; i < args_count; i++) {
576576 m_value* val = new m_value;
577577 val->id = 0 ;
@@ -583,7 +583,7 @@ static void FunctionTemplateCallback(const FunctionCallbackInfo<Value>& info) {
583583 }
584584
585585 ValuePtr val =
586- goFunctionCallback (ctx_ref, callback_ref, thisAndArgs, args_count);
586+ goFunctionCallback (ctx_ref, callback_ref, thisAndArgs. data () , args_count);
587587 if (val != nullptr ) {
588588 info.GetReturnValue ().Set (val->ptr .Get (iso));
589589 } else {
@@ -1688,9 +1688,10 @@ ValuePtr PromiseResult(ValuePtr ptr) {
16881688/* ********* Function **********/
16891689
16901690static void buildCallArguments (Isolate* iso,
1691- Local<Value>* argv,
1691+ std::vector< Local<Value>>& argv,
16921692 int argc,
16931693 ValuePtr args[]) {
1694+ argv.resize (argc);
16941695 for (int i = 0 ; i < argc; i++) {
16951696 argv[i] = args[i]->ptr .Get (iso);
16961697 }
@@ -1701,13 +1702,13 @@ RtnValue FunctionCall(ValuePtr ptr, ValuePtr recv, int argc, ValuePtr args[]) {
17011702
17021703 RtnValue rtn = {};
17031704 Local<Function> fn = Local<Function>::Cast (value);
1704- Local<Value> argv[argc] ;
1705+ std::vector< Local<Value>> argv;
17051706 buildCallArguments (iso, argv, argc, args);
17061707
17071708 Local<Value> local_recv = recv->ptr .Get (iso);
17081709
17091710 Local<Value> result;
1710- if (!fn->Call (local_ctx, local_recv, argc, argv).ToLocal (&result)) {
1711+ if (!fn->Call (local_ctx, local_recv, argc, argv. data () ).ToLocal (&result)) {
17111712 rtn.error = ExceptionError (try_catch, iso, local_ctx);
17121713 return rtn;
17131714 }
@@ -1724,10 +1725,10 @@ RtnValue FunctionNewInstance(ValuePtr ptr, int argc, ValuePtr args[]) {
17241725 LOCAL_VALUE (ptr)
17251726 RtnValue rtn = {};
17261727 Local<Function> fn = Local<Function>::Cast (value);
1727- Local<Value> argv[argc] ;
1728+ std::vector< Local<Value>> argv;
17281729 buildCallArguments (iso, argv, argc, args);
17291730 Local<Object> result;
1730- if (!fn->NewInstance (local_ctx, argc, argv).ToLocal (&result)) {
1731+ if (!fn->NewInstance (local_ctx, argc, argv. data () ).ToLocal (&result)) {
17311732 rtn.error = ExceptionError (try_catch, iso, local_ctx);
17321733 return rtn;
17331734 }
0 commit comments