@@ -512,36 +512,38 @@ namespace url {
512512 return true ;
513513 }
514514
515- static inline void Copy (Isolate* isolate ,
515+ static inline void Copy (Environment* env ,
516516 Local<Array> ary,
517517 std::vector<std::string>* vec) {
518518 const int32_t len = ary->Length ();
519519 if (len == 0 )
520520 return ; // nothing to copy
521521 vec->reserve (len);
522522 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 ( );
524524 if (val->IsString ()) {
525- Utf8Value value (isolate, val.As <String>());
525+ Utf8Value value (env-> isolate () , val.As <String>());
526526 vec->push_back (std::string (*value, value.length ()));
527527 }
528528 }
529529 }
530530
531- static inline Local<Array> Copy (Isolate* isolate ,
531+ static inline Local<Array> Copy (Environment* env ,
532532 std::vector<std::string> vec) {
533+ Isolate* isolate = env->isolate ();
533534 Local<Array> ary = Array::New (isolate, vec.size ());
534535 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 ( );
536537 return ary;
537538 }
538539
539540 static inline void HarvestBase (Environment* env,
540541 struct url_data * base,
541542 Local<Object> base_obj) {
543+ Local<Context> context = env->context ();
542544 Local<Value> flags = GET (env, base_obj, " flags" );
543545 if (flags->IsInt32 ())
544- base->flags = flags->Int32Value ();
546+ base->flags = flags->Int32Value (context). FromJust ( );
545547
546548 GET_AND_SET (env, base_obj, scheme, base, URL_FLAGS_HAS_SCHEME);
547549 GET_AND_SET (env, base_obj, username, base, URL_FLAGS_HAS_USERNAME);
@@ -551,11 +553,11 @@ namespace url {
551553 GET_AND_SET (env, base_obj, fragment, base, URL_FLAGS_HAS_FRAGMENT);
552554 Local<Value> port = GET (env, base_obj, " port" );
553555 if (port->IsInt32 ())
554- base->port = port->Int32Value ();
556+ base->port = port->Int32Value (context). FromJust ( );
555557 Local<Value> path = GET (env, base_obj, " path" );
556558 if (path->IsArray ()) {
557559 base->flags |= URL_FLAGS_HAS_PATH;
558- Copy (env-> isolate () , path.As <Array>(), &(base->path ));
560+ Copy (env, path.As <Array>(), &(base->path ));
559561 }
560562 }
561563
@@ -564,7 +566,7 @@ namespace url {
564566 Local<Object> context_obj) {
565567 Local<Value> flags = GET (env, context_obj, " flags" );
566568 if (flags->IsInt32 ()) {
567- int32_t _flags = flags->Int32Value ();
569+ int32_t _flags = flags->Int32Value (env-> context ()). FromJust ( );
568570 if (_flags & URL_FLAGS_SPECIAL)
569571 context->flags |= URL_FLAGS_SPECIAL;
570572 if (_flags & URL_FLAGS_CANNOT_BE_BASE)
@@ -577,7 +579,7 @@ namespace url {
577579 }
578580 Local<Value> port = GET (env, context_obj, " port" );
579581 if (port->IsInt32 ())
580- context->port = port->Int32Value ();
582+ context->port = port->Int32Value (env-> context ()). FromJust ( );
581583 }
582584
583585 // Single dot segment can be ".", "%2e", or "%2E"
@@ -635,7 +637,7 @@ namespace url {
635637 Local<Value> recv,
636638 const char * input,
637639 const size_t len,
638- enum url_parse_state override ,
640+ enum url_parse_state state_override ,
639641 Local<Value> base_obj,
640642 Local<Value> context_obj,
641643 Local<Function> cb) {
@@ -669,8 +671,9 @@ namespace url {
669671 buffer.reserve (len);
670672
671673 // 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 ;
674677
675678 const char * p = input;
676679 const char * end = input + len;
@@ -702,7 +705,7 @@ namespace url {
702705 if (ASCII_ALPHA (ch)) {
703706 buffer += TO_LOWER (ch);
704707 state = kScheme ;
705- } else if (!state_override ) {
708+ } else if (!has_state_override ) {
706709 state = kNoScheme ;
707710 continue ;
708711 } else {
@@ -714,7 +717,7 @@ namespace url {
714717 buffer += TO_LOWER (ch);
715718 p++;
716719 continue ;
717- } else if (ch == ' :' || (state_override && ch == kEOL )) {
720+ } else if (ch == ' :' || (has_state_override && ch == kEOL )) {
718721 buffer += ' :' ;
719722 if (buffer.size () > 0 ) {
720723 SET_HAVE_SCHEME ()
@@ -725,7 +728,7 @@ namespace url {
725728 } else {
726729 url.flags &= ~URL_FLAGS_SPECIAL;
727730 }
728- if (state_override )
731+ if (has_state_override )
729732 goto done;
730733 buffer.clear ();
731734 if (url.scheme == " file:" ) {
@@ -746,7 +749,7 @@ namespace url {
746749 url.path .push_back (" " );
747750 state = kCannotBeBase ;
748751 }
749- } else if (!state_override ) {
752+ } else if (!has_state_override ) {
750753 buffer.clear ();
751754 state = kNoScheme ;
752755 p = input;
@@ -1000,7 +1003,7 @@ namespace url {
10001003 URL_FAILED ()
10011004 buffer.clear ();
10021005 state = kPort ;
1003- if (override == kHostname )
1006+ if (state_override == kHostname )
10041007 TERMINATE ()
10051008 } else if (ch == kEOL ||
10061009 ch == ' /' ||
@@ -1015,7 +1018,7 @@ namespace url {
10151018 URL_FAILED ()
10161019 buffer.clear ();
10171020 state = kPathStart ;
1018- if (state_override )
1021+ if (has_state_override )
10191022 TERMINATE ()
10201023 } else {
10211024 if (ch == ' [' )
@@ -1028,7 +1031,7 @@ namespace url {
10281031 case kPort :
10291032 if (ASCII_DIGIT (ch)) {
10301033 buffer += ch;
1031- } else if (state_override ||
1034+ } else if (has_state_override ||
10321035 ch == kEOL ||
10331036 ch == ' /' ||
10341037 ch == ' ?' ||
@@ -1040,7 +1043,7 @@ namespace url {
10401043 port = port * 10 + buffer[i] - ' 0' ;
10411044 if (port >= 0 && port <= 0xffff ) {
10421045 url.port = NormalizePort (url.scheme , port);
1043- } else if (!state_override ) {
1046+ } else if (!has_state_override ) {
10441047 URL_FAILED ()
10451048 }
10461049 buffer.clear ();
@@ -1181,7 +1184,7 @@ namespace url {
11811184 if (ch == kEOL ||
11821185 ch == ' /' ||
11831186 special_back_slash ||
1184- (!state_override && (ch == ' ?' || ch == ' #' ))) {
1187+ (!has_state_override && (ch == ' ?' || ch == ' #' ))) {
11851188 if (IsDoubleDotSegment (buffer)) {
11861189 ShortenUrlPath (&url);
11871190 if (ch != ' /' && !special_back_slash) {
@@ -1233,7 +1236,7 @@ namespace url {
12331236 }
12341237 break ;
12351238 case kQuery :
1236- if (ch == kEOL || (!state_override && ch == ' #' )) {
1239+ if (ch == kEOL || (!has_state_override && ch == ' #' )) {
12371240 SET_HAVE_QUERY ()
12381241 url.query = buffer;
12391242 buffer.clear ();
@@ -1296,7 +1299,7 @@ namespace url {
12961299 if (url.port > -1 )
12971300 argv[ARG_PORT] = Integer::New (isolate, url.port );
12981301 if (DOES_HAVE_PATH (url))
1299- argv[ARG_PATH] = Copy (isolate , url.path );
1302+ argv[ARG_PATH] = Copy (env , url.path );
13001303 }
13011304
13021305 (void )cb->Call (context, recv, 9 , argv);
@@ -1314,13 +1317,15 @@ namespace url {
13141317 args[3 ]->IsObject ());
13151318 CHECK (args[4 ]->IsFunction ());
13161319 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+ }
13201325
13211326 Parse (env, args.This (),
13221327 *input, input.length (),
1323- override ,
1328+ state_override ,
13241329 args[2 ],
13251330 args[3 ],
13261331 args[4 ].As <Function>());
0 commit comments