Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
src: avoid implicit type conversions (take 2)
This fixes more C4244 MSVC warnings in the code base.

Refs: #37149
  • Loading branch information
targos committed Feb 12, 2021
commit c0a92899a8b90271d92241118c1dd1fd65acf840
34 changes: 15 additions & 19 deletions src/base64-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,17 @@ bool base64_decode_group_slow(char* const dst, const size_t dstlen,
size_t* const i, size_t* const k) {
uint8_t hi;
uint8_t lo;
#define V(expr) \
for (;;) { \
const uint8_t c = src[*i]; \
lo = unbase64(c); \
*i += 1; \
if (lo < 64) \
break; /* Legal character. */ \
if (c == '=' || *i >= srclen) \
return false; /* Stop decoding. */ \
} \
expr; \
if (*i >= srclen) \
return false; \
if (*k >= dstlen) \
return false; \
#define V(expr) \
for (;;) { \
const uint8_t c = static_cast<uint8_t>(src[*i]); \
lo = unbase64(c); \
*i += 1; \
if (lo < 64) break; /* Legal character. */ \
if (c == '=' || *i >= srclen) return false; /* Stop decoding. */ \
} \
expr; \
if (*i >= srclen) return false; \
if (*k >= dstlen) return false; \
hi = lo;
V(/* Nothing. */);
V(dst[(*k)++] = ((hi & 0x3F) << 2) | ((lo & 0x30) >> 4));
Expand All @@ -66,10 +62,10 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
size_t k = 0;
while (i < max_i && k < max_k) {
const unsigned char txt[] = {
static_cast<unsigned char>(unbase64(src[i + 0])),
static_cast<unsigned char>(unbase64(src[i + 1])),
static_cast<unsigned char>(unbase64(src[i + 2])),
static_cast<unsigned char>(unbase64(src[i + 3])),
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 0]))),
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 1]))),
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 2]))),
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 3]))),
};

const uint32_t v = ReadUint32BE(txt);
Expand Down
20 changes: 12 additions & 8 deletions src/crypto/crypto_dsa.cc
Original file line number Diff line number Diff line change
Expand Up @@ -146,14 +146,18 @@ Maybe<bool> GetDsaKeyDetail(
size_t modulus_length = BN_num_bytes(p) * CHAR_BIT;
size_t divisor_length = BN_num_bytes(q) * CHAR_BIT;

if (target->Set(
env->context(),
env->modulus_length_string(),
Number::New(env->isolate(), modulus_length)).IsNothing() ||
target->Set(
env->context(),
env->divisor_length_string(),
Number::New(env->isolate(), divisor_length)).IsNothing()) {
if (target
->Set(
env->context(),
env->modulus_length_string(),
Number::New(env->isolate(), static_cast<double>(modulus_length)))
.IsNothing() ||
target
->Set(
env->context(),
env->divisor_length_string(),
Number::New(env->isolate(), static_cast<double>(divisor_length)))
.IsNothing()) {
return Nothing<bool>();
}

Expand Down
3 changes: 2 additions & 1 deletion src/crypto/crypto_keygen.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ Maybe<bool> SecretKeyGenTraits::AdditionalConfig(
SecretKeyGenConfig* params) {
Environment* env = Environment::GetCurrent(args);
CHECK(args[*offset]->IsUint32());
params->length = std::trunc(args[*offset].As<Uint32>()->Value() / CHAR_BIT);
params->length = static_cast<size_t>(
std::trunc(args[*offset].As<Uint32>()->Value() / CHAR_BIT));
if (params->length > INT_MAX) {
const std::string msg{
SPrintF("length must be less than or equal to %s bits",
Expand Down
7 changes: 3 additions & 4 deletions src/crypto/crypto_keys.cc
Original file line number Diff line number Diff line change
Expand Up @@ -529,10 +529,9 @@ Maybe<bool> GetSecretKeyDetail(
// converted to bits.

size_t length = key->GetSymmetricKeySize() * CHAR_BIT;
return target->Set(
env->context(),
env->length_string(),
Number::New(env->isolate(), length));
return target->Set(env->context(),
env->length_string(),
Number::New(env->isolate(), static_cast<double>(length)));
}

Maybe<bool> GetAsymmetricKeyDetail(
Expand Down
10 changes: 6 additions & 4 deletions src/crypto/crypto_rsa.cc
Original file line number Diff line number Diff line change
Expand Up @@ -532,10 +532,12 @@ Maybe<bool> GetRsaKeyDetail(

size_t modulus_length = BN_num_bytes(n) * CHAR_BIT;

if (target->Set(
env->context(),
env->modulus_length_string(),
Number::New(env->isolate(), modulus_length)).IsNothing()) {
if (target
->Set(
env->context(),
env->modulus_length_string(),
Number::New(env->isolate(), static_cast<double>(modulus_length)))
.IsNothing()) {
return Nothing<bool>();
}

Expand Down
27 changes: 15 additions & 12 deletions src/inspector/worker_inspector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace {
class WorkerStartedRequest : public Request {
public:
WorkerStartedRequest(
int id,
uint64_t id,
const std::string& url,
std::shared_ptr<node::inspector::MainThreadHandle> worker_thread,
bool waiting)
Expand All @@ -28,7 +28,7 @@ class WorkerStartedRequest : public Request {
return "Worker " + std::to_string(id);
}

int id_;
uint64_t id_;
WorkerInfo info_;
bool waiting_;
};
Expand All @@ -42,22 +42,25 @@ void Report(const std::unique_ptr<WorkerDelegate>& delegate,

class WorkerFinishedRequest : public Request {
public:
explicit WorkerFinishedRequest(int worker_id) : worker_id_(worker_id) {}
explicit WorkerFinishedRequest(uint64_t worker_id) : worker_id_(worker_id) {}

void Call(MainThreadInterface* thread) override {
thread->inspector_agent()->GetWorkerManager()->WorkerFinished(worker_id_);
}

private:
int worker_id_;
uint64_t worker_id_;
};
} // namespace


ParentInspectorHandle::ParentInspectorHandle(
int id, const std::string& url,
std::shared_ptr<MainThreadHandle> parent_thread, bool wait_for_connect)
: id_(id), url_(url), parent_thread_(parent_thread),
uint64_t id,
const std::string& url,
std::shared_ptr<MainThreadHandle> parent_thread,
bool wait_for_connect)
: id_(id),
url_(url),
parent_thread_(parent_thread),
wait_(wait_for_connect) {}

ParentInspectorHandle::~ParentInspectorHandle() {
Expand All @@ -78,11 +81,11 @@ std::unique_ptr<inspector::InspectorSession> ParentInspectorHandle::Connect(
return parent_thread_->Connect(std::move(delegate), prevent_shutdown);
}

void WorkerManager::WorkerFinished(int session_id) {
void WorkerManager::WorkerFinished(uint64_t session_id) {
children_.erase(session_id);
}

void WorkerManager::WorkerStarted(int session_id,
void WorkerManager::WorkerStarted(uint64_t session_id,
const WorkerInfo& info,
bool waiting) {
if (info.worker_thread->Expired())
Expand All @@ -93,8 +96,8 @@ void WorkerManager::WorkerStarted(int session_id,
}
}

std::unique_ptr<ParentInspectorHandle>
WorkerManager::NewParentHandle(int thread_id, const std::string& url) {
std::unique_ptr<ParentInspectorHandle> WorkerManager::NewParentHandle(
uint64_t thread_id, const std::string& url) {
bool wait = !delegates_waiting_on_start_.empty();
return std::make_unique<ParentInspectorHandle>(thread_id, url, thread_, wait);
}
Expand Down
15 changes: 8 additions & 7 deletions src/inspector/worker_inspector.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,13 @@ struct WorkerInfo {

class ParentInspectorHandle {
public:
ParentInspectorHandle(int id, const std::string& url,
ParentInspectorHandle(uint64_t id,
const std::string& url,
std::shared_ptr<MainThreadHandle> parent_thread,
bool wait_for_connect);
~ParentInspectorHandle();
std::unique_ptr<ParentInspectorHandle> NewParentInspectorHandle(
int thread_id, const std::string& url) {
uint64_t thread_id, const std::string& url) {
return std::make_unique<ParentInspectorHandle>(thread_id,
url,
parent_thread_,
Expand All @@ -75,7 +76,7 @@ class ParentInspectorHandle {
bool prevent_shutdown);

private:
int id_;
uint64_t id_;
std::string url_;
std::shared_ptr<MainThreadHandle> parent_thread_;
bool wait_;
Expand All @@ -87,9 +88,9 @@ class WorkerManager : public std::enable_shared_from_this<WorkerManager> {
: thread_(thread) {}

std::unique_ptr<ParentInspectorHandle> NewParentHandle(
int thread_id, const std::string& url);
void WorkerStarted(int session_id, const WorkerInfo& info, bool waiting);
void WorkerFinished(int session_id);
uint64_t thread_id, const std::string& url);
void WorkerStarted(uint64_t session_id, const WorkerInfo& info, bool waiting);
void WorkerFinished(uint64_t session_id);
std::unique_ptr<WorkerManagerEventHandle> SetAutoAttach(
std::unique_ptr<WorkerDelegate> attach_delegate);
void SetWaitOnStartForDelegate(int id, bool wait);
Expand All @@ -100,7 +101,7 @@ class WorkerManager : public std::enable_shared_from_this<WorkerManager> {

private:
std::shared_ptr<MainThreadHandle> thread_;
std::unordered_map<int, WorkerInfo> children_;
std::unordered_map<uint64_t, WorkerInfo> children_;
std::unordered_map<int, std::unique_ptr<WorkerDelegate>> delegates_;
// If any one needs it, workers stop for all
std::unordered_set<int> delegates_waiting_on_start_;
Expand Down
4 changes: 2 additions & 2 deletions src/inspector_agent.cc
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ class NodeInspectorClient : public V8InspectorClient {
timers_.emplace(std::piecewise_construct, std::make_tuple(data),
std::make_tuple(env_, [=]() { callback(data); }));
CHECK(result.second);
uint64_t interval = 1000 * interval_s;
uint64_t interval = static_cast<uint64_t>(1000 * interval_s);
result.first->second.Update(interval, interval);
}

Expand Down Expand Up @@ -917,7 +917,7 @@ void Agent::SetParentHandle(
}

std::unique_ptr<ParentInspectorHandle> Agent::GetParentHandle(
int thread_id, const std::string& url) {
uint64_t thread_id, const std::string& url) {
if (!parent_handle_) {
return client_->getWorkerManager()->NewParentHandle(thread_id, url);
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/inspector_agent.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class Agent {

void SetParentHandle(std::unique_ptr<ParentInspectorHandle> parent_handle);
std::unique_ptr<ParentInspectorHandle> GetParentHandle(
int thread_id, const std::string& url);
uint64_t thread_id, const std::string& url);

// Called to create inspector sessions that can be used from the same thread.
// The inspector responds by using the delegate to send messages back.
Expand Down
2 changes: 1 addition & 1 deletion src/node_serdes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ void DeserializerContext::ReadRawBytes(
CHECK_GE(position, ctx->data_);
CHECK_LE(position + length, ctx->data_ + ctx->length_);

const uint32_t offset = position - ctx->data_;
const uint32_t offset = static_cast<uint32_t>(position - ctx->data_);
CHECK_EQ(ctx->data_ + offset, position);

args.GetReturnValue().Set(offset);
Expand Down
9 changes: 5 additions & 4 deletions src/node_url.cc
Original file line number Diff line number Diff line change
Expand Up @@ -896,7 +896,7 @@ void URLHost::ParseIPv6Host(const char* input, size_t length) {
}

if (compress_pointer != nullptr) {
unsigned swaps = piece_pointer - compress_pointer;
int64_t swaps = piece_pointer - compress_pointer;
piece_pointer = buffer_end - 1;
while (piece_pointer != &value_.ipv6[0] && swaps > 0) {
uint16_t temp = *piece_pointer;
Expand Down Expand Up @@ -963,7 +963,7 @@ void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) {

while (pointer <= end) {
const char ch = pointer < end ? pointer[0] : kEOL;
int remaining = end - pointer - 1;
int64_t remaining = end - pointer - 1;
if (ch == '.' || ch == kEOL) {
if (++parts > static_cast<int>(arraysize(numbers)))
return;
Expand Down Expand Up @@ -996,10 +996,11 @@ void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) {
}

type_ = HostType::H_IPV4;
val = numbers[parts - 1];
val = static_cast<uint32_t>(numbers[parts - 1]);
for (int n = 0; n < parts - 1; n++) {
double b = 3 - n;
val += numbers[n] * pow(256, b);
val +=
static_cast<uint32_t>(numbers[n]) * static_cast<uint32_t>(pow(256, b));
}

value_.ipv4 = val;
Expand Down
6 changes: 4 additions & 2 deletions src/node_wasi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,8 @@ void WASI::ArgsGet(const FunctionCallbackInfo<Value>& args) {

if (err == UVWASI_ESUCCESS) {
for (size_t i = 0; i < wasi->uvw_.argc; i++) {
uint32_t offset = argv_buf_offset + (argv[i] - argv[0]);
uint32_t offset =
static_cast<uint32_t>(argv_buf_offset + (argv[i] - argv[0]));
uvwasi_serdes_write_uint32_t(memory,
argv_offset +
(i * UVWASI_SERDES_SIZE_uint32_t),
Expand Down Expand Up @@ -410,7 +411,8 @@ void WASI::EnvironGet(const FunctionCallbackInfo<Value>& args) {

if (err == UVWASI_ESUCCESS) {
for (size_t i = 0; i < wasi->uvw_.envc; i++) {
uint32_t offset = environ_buf_offset + (environment[i] - environment[0]);
uint32_t offset = static_cast<uint32_t>(
environ_buf_offset + (environment[i] - environment[0]));

uvwasi_serdes_write_uint32_t(memory,
environ_offset +
Expand Down
2 changes: 1 addition & 1 deletion src/signal_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ class SignalWrap : public HandleWrap {

void DecreaseSignalHandlerCount(int signum) {
Mutex::ScopedLock lock(handled_signals_mutex);
int new_handler_count = --handled_signals[signum];
int64_t new_handler_count = --handled_signals[signum];
CHECK_GE(new_handler_count, 0);
if (new_handler_count == 0)
handled_signals.erase(signum);
Expand Down
2 changes: 1 addition & 1 deletion src/stream_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ MaybeLocal<Value> StreamBase::CallJSOnreadMethod(ssize_t nread,
}
}

env->stream_base_state()[kReadBytesOrError] = nread;
env->stream_base_state()[kReadBytesOrError] = static_cast<int32_t>(nread);
env->stream_base_state()[kArrayBufferOffset] = offset;

Local<Value> argv[] = {
Expand Down
4 changes: 2 additions & 2 deletions src/string_bytes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,8 @@ static size_t hex_decode(char* buf,
const size_t srcLen) {
size_t i;
for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) {
unsigned a = unhex(src[i * 2 + 0]);
unsigned b = unhex(src[i * 2 + 1]);
unsigned a = unhex(static_cast<uint8_t>(src[i * 2 + 0]));
unsigned b = unhex(static_cast<uint8_t>(src[i * 2 + 1]));
if (!~a || !~b)
return i;
buf[i] = (a << 4) | b;
Expand Down
11 changes: 5 additions & 6 deletions src/udp_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) {
wrap->current_send_has_callback_ =
sendto ? args[5]->IsTrue() : args[3]->IsTrue();

err = wrap->Send(*bufs, count, addr);
err = static_cast<int>(wrap->Send(*bufs, count, addr));

wrap->current_send_req_wrap_.Clear();
wrap->current_send_has_callback_ = false;
Expand Down Expand Up @@ -705,11 +705,10 @@ void UDPWrap::OnRecv(ssize_t nread,
Context::Scope context_scope(env->context());

Local<Value> argv[] = {
Integer::New(env->isolate(), nread),
object(),
Undefined(env->isolate()),
Undefined(env->isolate())
};
Integer::New(env->isolate(), static_cast<int32_t>(nread)),
object(),
Undefined(env->isolate()),
Undefined(env->isolate())};

if (nread < 0) {
MakeCallback(env->onmessage_string(), arraysize(argv), argv);
Expand Down