@@ -512,36 +512,38 @@ namespace url {
512
512
return true ;
513
513
}
514
514
515
- static inline void Copy (Isolate* isolate ,
515
+ static inline void Copy (Environment* env ,
516
516
Local<Array> ary,
517
517
std::vector<std::string>* vec) {
518
518
const int32_t len = ary->Length ();
519
519
if (len == 0 )
520
520
return ; // nothing to copy
521
521
vec->reserve (len);
522
522
for (int32_t n = 0 ; n < len; n++) {
523
- Local<Value> val = ary->Get (n );
523
+ Local<Value> val = ary->Get (env-> context (), n). ToLocalChecked ( );
524
524
if (val->IsString ()) {
525
- Utf8Value value (isolate, val.As <String>());
525
+ Utf8Value value (env-> isolate () , val.As <String>());
526
526
vec->push_back (std::string (*value, value.length ()));
527
527
}
528
528
}
529
529
}
530
530
531
- static inline Local<Array> Copy (Isolate* isolate ,
531
+ static inline Local<Array> Copy (Environment* env ,
532
532
std::vector<std::string> vec) {
533
+ Isolate* isolate = env->isolate ();
533
534
Local<Array> ary = Array::New (isolate, vec.size ());
534
535
for (size_t n = 0 ; n < vec.size (); n++)
535
- ary->Set (n, UTF8STRING (isolate, vec[n]));
536
+ ary->Set (env-> context (), n, UTF8STRING (isolate, vec[n])). FromJust ( );
536
537
return ary;
537
538
}
538
539
539
540
static inline void HarvestBase (Environment* env,
540
541
struct url_data * base,
541
542
Local<Object> base_obj) {
543
+ Local<Context> context = env->context ();
542
544
Local<Value> flags = GET (env, base_obj, " flags" );
543
545
if (flags->IsInt32 ())
544
- base->flags = flags->Int32Value ();
546
+ base->flags = flags->Int32Value (context). FromJust ( );
545
547
546
548
GET_AND_SET (env, base_obj, scheme, base, URL_FLAGS_HAS_SCHEME);
547
549
GET_AND_SET (env, base_obj, username, base, URL_FLAGS_HAS_USERNAME);
@@ -551,11 +553,11 @@ namespace url {
551
553
GET_AND_SET (env, base_obj, fragment, base, URL_FLAGS_HAS_FRAGMENT);
552
554
Local<Value> port = GET (env, base_obj, " port" );
553
555
if (port->IsInt32 ())
554
- base->port = port->Int32Value ();
556
+ base->port = port->Int32Value (context). FromJust ( );
555
557
Local<Value> path = GET (env, base_obj, " path" );
556
558
if (path->IsArray ()) {
557
559
base->flags |= URL_FLAGS_HAS_PATH;
558
- Copy (env-> isolate () , path.As <Array>(), &(base->path ));
560
+ Copy (env, path.As <Array>(), &(base->path ));
559
561
}
560
562
}
561
563
@@ -564,7 +566,7 @@ namespace url {
564
566
Local<Object> context_obj) {
565
567
Local<Value> flags = GET (env, context_obj, " flags" );
566
568
if (flags->IsInt32 ()) {
567
- int32_t _flags = flags->Int32Value ();
569
+ int32_t _flags = flags->Int32Value (env-> context ()). FromJust ( );
568
570
if (_flags & URL_FLAGS_SPECIAL)
569
571
context->flags |= URL_FLAGS_SPECIAL;
570
572
if (_flags & URL_FLAGS_CANNOT_BE_BASE)
@@ -577,7 +579,7 @@ namespace url {
577
579
}
578
580
Local<Value> port = GET (env, context_obj, " port" );
579
581
if (port->IsInt32 ())
580
- context->port = port->Int32Value ();
582
+ context->port = port->Int32Value (env-> context ()). FromJust ( );
581
583
}
582
584
583
585
// Single dot segment can be ".", "%2e", or "%2E"
@@ -635,7 +637,7 @@ namespace url {
635
637
Local<Value> recv,
636
638
const char * input,
637
639
const size_t len,
638
- enum url_parse_state override ,
640
+ enum url_parse_state state_override ,
639
641
Local<Value> base_obj,
640
642
Local<Value> context_obj,
641
643
Local<Function> cb) {
@@ -669,8 +671,9 @@ namespace url {
669
671
buffer.reserve (len);
670
672
671
673
// Set the initial parse state.
672
- const bool state_override = override != kUnknownState ;
673
- enum url_parse_state state = state_override ? override : kSchemeStart ;
674
+ const bool has_state_override = state_override != kUnknownState ;
675
+ enum url_parse_state state = has_state_override ? state_override :
676
+ kSchemeStart ;
674
677
675
678
const char * p = input;
676
679
const char * end = input + len;
@@ -702,7 +705,7 @@ namespace url {
702
705
if (ASCII_ALPHA (ch)) {
703
706
buffer += TO_LOWER (ch);
704
707
state = kScheme ;
705
- } else if (!state_override ) {
708
+ } else if (!has_state_override ) {
706
709
state = kNoScheme ;
707
710
continue ;
708
711
} else {
@@ -714,7 +717,7 @@ namespace url {
714
717
buffer += TO_LOWER (ch);
715
718
p++;
716
719
continue ;
717
- } else if (ch == ' :' || (state_override && ch == kEOL )) {
720
+ } else if (ch == ' :' || (has_state_override && ch == kEOL )) {
718
721
buffer += ' :' ;
719
722
if (buffer.size () > 0 ) {
720
723
SET_HAVE_SCHEME ()
@@ -725,7 +728,7 @@ namespace url {
725
728
} else {
726
729
url.flags &= ~URL_FLAGS_SPECIAL;
727
730
}
728
- if (state_override )
731
+ if (has_state_override )
729
732
goto done;
730
733
buffer.clear ();
731
734
if (url.scheme == " file:" ) {
@@ -746,7 +749,7 @@ namespace url {
746
749
url.path .push_back (" " );
747
750
state = kCannotBeBase ;
748
751
}
749
- } else if (!state_override ) {
752
+ } else if (!has_state_override ) {
750
753
buffer.clear ();
751
754
state = kNoScheme ;
752
755
p = input;
@@ -1000,7 +1003,7 @@ namespace url {
1000
1003
URL_FAILED ()
1001
1004
buffer.clear ();
1002
1005
state = kPort ;
1003
- if (override == kHostname )
1006
+ if (state_override == kHostname )
1004
1007
TERMINATE ()
1005
1008
} else if (ch == kEOL ||
1006
1009
ch == ' /' ||
@@ -1015,7 +1018,7 @@ namespace url {
1015
1018
URL_FAILED ()
1016
1019
buffer.clear ();
1017
1020
state = kPathStart ;
1018
- if (state_override )
1021
+ if (has_state_override )
1019
1022
TERMINATE ()
1020
1023
} else {
1021
1024
if (ch == ' [' )
@@ -1028,7 +1031,7 @@ namespace url {
1028
1031
case kPort :
1029
1032
if (ASCII_DIGIT (ch)) {
1030
1033
buffer += ch;
1031
- } else if (state_override ||
1034
+ } else if (has_state_override ||
1032
1035
ch == kEOL ||
1033
1036
ch == ' /' ||
1034
1037
ch == ' ?' ||
@@ -1040,7 +1043,7 @@ namespace url {
1040
1043
port = port * 10 + buffer[i] - ' 0' ;
1041
1044
if (port >= 0 && port <= 0xffff ) {
1042
1045
url.port = NormalizePort (url.scheme , port);
1043
- } else if (!state_override ) {
1046
+ } else if (!has_state_override ) {
1044
1047
URL_FAILED ()
1045
1048
}
1046
1049
buffer.clear ();
@@ -1181,7 +1184,7 @@ namespace url {
1181
1184
if (ch == kEOL ||
1182
1185
ch == ' /' ||
1183
1186
special_back_slash ||
1184
- (!state_override && (ch == ' ?' || ch == ' #' ))) {
1187
+ (!has_state_override && (ch == ' ?' || ch == ' #' ))) {
1185
1188
if (IsDoubleDotSegment (buffer)) {
1186
1189
ShortenUrlPath (&url);
1187
1190
if (ch != ' /' && !special_back_slash) {
@@ -1233,7 +1236,7 @@ namespace url {
1233
1236
}
1234
1237
break ;
1235
1238
case kQuery :
1236
- if (ch == kEOL || (!state_override && ch == ' #' )) {
1239
+ if (ch == kEOL || (!has_state_override && ch == ' #' )) {
1237
1240
SET_HAVE_QUERY ()
1238
1241
url.query = buffer;
1239
1242
buffer.clear ();
@@ -1296,7 +1299,7 @@ namespace url {
1296
1299
if (url.port > -1 )
1297
1300
argv[ARG_PORT] = Integer::New (isolate, url.port );
1298
1301
if (DOES_HAVE_PATH (url))
1299
- argv[ARG_PATH] = Copy (isolate , url.path );
1302
+ argv[ARG_PATH] = Copy (env , url.path );
1300
1303
}
1301
1304
1302
1305
(void )cb->Call (context, recv, 9 , argv);
@@ -1314,13 +1317,15 @@ namespace url {
1314
1317
args[3 ]->IsObject ());
1315
1318
CHECK (args[4 ]->IsFunction ());
1316
1319
Utf8Value input (env->isolate (), args[0 ]);
1317
- enum url_parse_state override = kUnknownState ;
1318
- if (args[1 ]->IsNumber ())
1319
- override = (enum url_parse_state)(args[1 ]->Uint32Value ());
1320
+ enum url_parse_state state_override = kUnknownState ;
1321
+ if (args[1 ]->IsNumber ()) {
1322
+ state_override = static_cast <enum url_parse_state>(
1323
+ args[1 ]->Uint32Value (env->context ()).FromJust ());
1324
+ }
1320
1325
1321
1326
Parse (env, args.This (),
1322
1327
*input, input.length (),
1323
- override ,
1328
+ state_override ,
1324
1329
args[2 ],
1325
1330
args[3 ],
1326
1331
args[4 ].As <Function>());
0 commit comments