@@ -571,10 +571,7 @@ void AfterScanDir(uv_fs_t* req) {
571
571
Environment* env = req_wrap->env ();
572
572
Local<Value> error;
573
573
int r;
574
- Local<Array> names = Array::New (env->isolate (), 0 );
575
- Local<Function> fn = env->push_values_to_array_function ();
576
- Local<Value> name_argv[NODE_PUSH_VAL_TO_ARRAY_MAX];
577
- size_t name_idx = 0 ;
574
+ std::vector<Local<Value>> name_argv;
578
575
579
576
for (int i = 0 ; ; i++) {
580
577
uv_dirent_t ent;
@@ -596,23 +593,11 @@ void AfterScanDir(uv_fs_t* req) {
596
593
if (filename.IsEmpty ())
597
594
return req_wrap->Reject (error);
598
595
599
- name_argv[name_idx++] = filename.ToLocalChecked ();
600
-
601
- if (name_idx >= arraysize (name_argv)) {
602
- MaybeLocal<Value> ret = fn->Call (env->context (), names, name_idx,
603
- name_argv);
604
- if (ret.IsEmpty ()) {
605
- return ;
606
- }
607
- name_idx = 0 ;
608
- }
609
- }
610
-
611
- if (name_idx > 0 ) {
612
- fn->Call (env->context (), names, name_idx, name_argv)
613
- .ToLocalChecked ();
596
+ name_argv.push_back (filename.ToLocalChecked ());
614
597
}
615
598
599
+ Local<Array> names =
600
+ Array::New (env->isolate (), name_argv.data (), name_argv.size ());
616
601
req_wrap->Resolve (names);
617
602
}
618
603
@@ -1497,18 +1482,8 @@ static void ReadDir(const FunctionCallbackInfo<Value>& args) {
1497
1482
1498
1483
CHECK_GE (req_wrap_sync.req .result , 0 );
1499
1484
int r;
1500
- Local<Array> names = Array::New (isolate, 0 );
1501
- Local<Function> fn = env->push_values_to_array_function ();
1502
- Local<Value> name_v[NODE_PUSH_VAL_TO_ARRAY_MAX];
1503
- size_t name_idx = 0 ;
1504
-
1505
- Local<Value> types;
1506
- Local<Value> type_v[NODE_PUSH_VAL_TO_ARRAY_MAX];
1507
- size_t type_idx;
1508
- if (with_types) {
1509
- types = Array::New (isolate, 0 );
1510
- type_idx = 0 ;
1511
- }
1485
+ std::vector<Local<Value>> name_v;
1486
+ std::vector<Local<Value>> type_v;
1512
1487
1513
1488
for (int i = 0 ; ; i++) {
1514
1489
uv_dirent_t ent;
@@ -1537,47 +1512,18 @@ static void ReadDir(const FunctionCallbackInfo<Value>& args) {
1537
1512
return ;
1538
1513
}
1539
1514
1540
- name_v[name_idx++] = filename.ToLocalChecked ();
1541
-
1542
- if (name_idx >= arraysize (name_v)) {
1543
- MaybeLocal<Value> ret = fn->Call (env->context (), names, name_idx,
1544
- name_v);
1545
- if (ret.IsEmpty ()) {
1546
- return ;
1547
- }
1548
- name_idx = 0 ;
1549
- }
1515
+ name_v.push_back (filename.ToLocalChecked ());
1550
1516
1551
1517
if (with_types) {
1552
- type_v[type_idx++] = Integer::New (isolate, ent.type );
1553
-
1554
- if (type_idx >= arraysize (type_v)) {
1555
- MaybeLocal<Value> ret = fn->Call (env->context (), types, type_idx,
1556
- type_v);
1557
- if (ret.IsEmpty ()) {
1558
- return ;
1559
- }
1560
- type_idx = 0 ;
1561
- }
1518
+ type_v.push_back (Integer::New (isolate, ent.type ));
1562
1519
}
1563
1520
}
1564
1521
1565
- if (name_idx > 0 ) {
1566
- MaybeLocal<Value> ret = fn->Call (env->context (), names, name_idx, name_v);
1567
- if (ret.IsEmpty ()) {
1568
- return ;
1569
- }
1570
- }
1571
-
1572
- if (with_types && type_idx > 0 ) {
1573
- MaybeLocal<Value> ret = fn->Call (env->context (), types, type_idx, type_v);
1574
- if (ret.IsEmpty ()) {
1575
- return ;
1576
- }
1577
- }
1578
1522
1523
+ Local<Array> names = Array::New (isolate, name_v.data (), name_v.size ());
1579
1524
if (with_types) {
1580
1525
Local<Array> result = Array::New (isolate, 2 );
1526
+ Local<Value> types = Array::New (isolate, type_v.data (), type_v.size ());
1581
1527
result->Set (0 , names);
1582
1528
result->Set (1 , types);
1583
1529
args.GetReturnValue ().Set (result);
0 commit comments