Skip to content

Commit c5210b2

Browse files
TimothyGuitaloacasas
authored andcommitted
src: remove usage of V8 deprecated API in node_url.cc
Also: - Avoid using 'override' as variable name - Use explicit static_cast instead of C-style cast PR-URL: #11066 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Michaël Zasso <[email protected]>
1 parent 598d35c commit c5210b2

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

src/node_url.cc

+33-28
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)