@@ -569,9 +569,9 @@ static void FunctionTemplateCallback(const FunctionCallbackInfo<Value>& info) {
569
569
iso, info.This ()));
570
570
571
571
int args_count = info.Length ();
572
- ValuePtr thisAndArgs[ args_count + 1 ] ;
572
+ std::vector< ValuePtr> thisAndArgs ( args_count + 1 ) ;
573
573
thisAndArgs[0 ] = tracked_value (ctx, _this);
574
- ValuePtr* args = thisAndArgs + 1 ;
574
+ ValuePtr* args = thisAndArgs. data () + 1 ;
575
575
for (int i = 0 ; i < args_count; i++) {
576
576
m_value* val = new m_value;
577
577
val->id = 0 ;
@@ -583,7 +583,7 @@ static void FunctionTemplateCallback(const FunctionCallbackInfo<Value>& info) {
583
583
}
584
584
585
585
ValuePtr val =
586
- goFunctionCallback (ctx_ref, callback_ref, thisAndArgs, args_count);
586
+ goFunctionCallback (ctx_ref, callback_ref, thisAndArgs. data () , args_count);
587
587
if (val != nullptr ) {
588
588
info.GetReturnValue ().Set (val->ptr .Get (iso));
589
589
} else {
@@ -1688,9 +1688,10 @@ ValuePtr PromiseResult(ValuePtr ptr) {
1688
1688
/* ********* Function **********/
1689
1689
1690
1690
static void buildCallArguments (Isolate* iso,
1691
- Local<Value>* argv,
1691
+ std::vector< Local<Value>>& argv,
1692
1692
int argc,
1693
1693
ValuePtr args[]) {
1694
+ argv.resize (argc);
1694
1695
for (int i = 0 ; i < argc; i++) {
1695
1696
argv[i] = args[i]->ptr .Get (iso);
1696
1697
}
@@ -1701,13 +1702,13 @@ RtnValue FunctionCall(ValuePtr ptr, ValuePtr recv, int argc, ValuePtr args[]) {
1701
1702
1702
1703
RtnValue rtn = {};
1703
1704
Local<Function> fn = Local<Function>::Cast (value);
1704
- Local<Value> argv[argc] ;
1705
+ std::vector< Local<Value>> argv;
1705
1706
buildCallArguments (iso, argv, argc, args);
1706
1707
1707
1708
Local<Value> local_recv = recv->ptr .Get (iso);
1708
1709
1709
1710
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)) {
1711
1712
rtn.error = ExceptionError (try_catch, iso, local_ctx);
1712
1713
return rtn;
1713
1714
}
@@ -1724,10 +1725,10 @@ RtnValue FunctionNewInstance(ValuePtr ptr, int argc, ValuePtr args[]) {
1724
1725
LOCAL_VALUE (ptr)
1725
1726
RtnValue rtn = {};
1726
1727
Local<Function> fn = Local<Function>::Cast (value);
1727
- Local<Value> argv[argc] ;
1728
+ std::vector< Local<Value>> argv;
1728
1729
buildCallArguments (iso, argv, argc, args);
1729
1730
Local<Object> result;
1730
- if (!fn->NewInstance (local_ctx, argc, argv).ToLocal (&result)) {
1731
+ if (!fn->NewInstance (local_ctx, argc, argv. data () ).ToLocal (&result)) {
1731
1732
rtn.error = ExceptionError (try_catch, iso, local_ctx);
1732
1733
return rtn;
1733
1734
}
0 commit comments