diff options
author | Michaël Zasso <targos@protonmail.com> | 2021-02-12 22:57:53 +0300 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2021-02-28 16:39:58 +0300 |
commit | c75f5f372db052cd8a190645b169b640c845bec5 (patch) | |
tree | 8c5a9636b244ea68a6ff702fec2d5e9dc23d6c37 /src | |
parent | b3bf3d98247fc650acb02fb72627bc7cb60cfde4 (diff) |
src: avoid implicit type conversions (take 2)
This fixes more C4244 MSVC warnings in the code base.
Refs: https://github.com/nodejs/node/pull/37149
PR-URL: https://github.com/nodejs/node/pull/37334
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/base64-inl.h | 34 | ||||
-rw-r--r-- | src/crypto/crypto_dsa.cc | 20 | ||||
-rw-r--r-- | src/crypto/crypto_keygen.cc | 3 | ||||
-rw-r--r-- | src/crypto/crypto_keys.cc | 7 | ||||
-rw-r--r-- | src/crypto/crypto_rsa.cc | 10 | ||||
-rw-r--r-- | src/inspector/worker_inspector.cc | 27 | ||||
-rw-r--r-- | src/inspector/worker_inspector.h | 15 | ||||
-rw-r--r-- | src/inspector_agent.cc | 4 | ||||
-rw-r--r-- | src/inspector_agent.h | 2 | ||||
-rw-r--r-- | src/node_serdes.cc | 2 | ||||
-rw-r--r-- | src/node_url.cc | 9 | ||||
-rw-r--r-- | src/node_wasi.cc | 6 | ||||
-rw-r--r-- | src/signal_wrap.cc | 2 | ||||
-rw-r--r-- | src/stream_base.cc | 2 | ||||
-rw-r--r-- | src/string_bytes.cc | 4 | ||||
-rw-r--r-- | src/udp_wrap.cc | 11 |
16 files changed, 83 insertions, 75 deletions
diff --git a/src/base64-inl.h b/src/base64-inl.h index 650218a0481..1046fd83b9d 100644 --- a/src/base64-inl.h +++ b/src/base64-inl.h @@ -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)); @@ -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); diff --git a/src/crypto/crypto_dsa.cc b/src/crypto/crypto_dsa.cc index c4016dc07c6..d3446eb60a2 100644 --- a/src/crypto/crypto_dsa.cc +++ b/src/crypto/crypto_dsa.cc @@ -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>(); } diff --git a/src/crypto/crypto_keygen.cc b/src/crypto/crypto_keygen.cc index b37cd87da94..b08ca3b2f51 100644 --- a/src/crypto/crypto_keygen.cc +++ b/src/crypto/crypto_keygen.cc @@ -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", diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc index 07004b78bac..4f0102a0eed 100644 --- a/src/crypto/crypto_keys.cc +++ b/src/crypto/crypto_keys.cc @@ -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( diff --git a/src/crypto/crypto_rsa.cc b/src/crypto/crypto_rsa.cc index 741e1885e26..c3250ea2e42 100644 --- a/src/crypto/crypto_rsa.cc +++ b/src/crypto/crypto_rsa.cc @@ -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>(); } diff --git a/src/inspector/worker_inspector.cc b/src/inspector/worker_inspector.cc index deeddcc0836..ff292ea4422 100644 --- a/src/inspector/worker_inspector.cc +++ b/src/inspector/worker_inspector.cc @@ -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) @@ -28,7 +28,7 @@ class WorkerStartedRequest : public Request { return "Worker " + std::to_string(id); } - int id_; + uint64_t id_; WorkerInfo info_; bool waiting_; }; @@ -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() { @@ -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()) @@ -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); } diff --git a/src/inspector/worker_inspector.h b/src/inspector/worker_inspector.h index b01063e01fc..540d98c742f 100644 --- a/src/inspector/worker_inspector.h +++ b/src/inspector/worker_inspector.h @@ -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_, @@ -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_; @@ -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); @@ -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_; diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index c101bf80d2a..9c3721f0689 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -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); } @@ -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 { diff --git a/src/inspector_agent.h b/src/inspector_agent.h index efd090c49b4..08b8817f436 100644 --- a/src/inspector_agent.h +++ b/src/inspector_agent.h @@ -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. diff --git a/src/node_serdes.cc b/src/node_serdes.cc index be16f4dd053..f6f0034bc24 100644 --- a/src/node_serdes.cc +++ b/src/node_serdes.cc @@ -444,7 +444,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); diff --git a/src/node_url.cc b/src/node_url.cc index 82fe8078a8d..399c37638ad 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -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; @@ -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; @@ -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; diff --git a/src/node_wasi.cc b/src/node_wasi.cc index 67d3966e201..ffcc37c5274 100644 --- a/src/node_wasi.cc +++ b/src/node_wasi.cc @@ -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), @@ -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 + diff --git a/src/signal_wrap.cc b/src/signal_wrap.cc index 49ea849f637..cdf063c035a 100644 --- a/src/signal_wrap.cc +++ b/src/signal_wrap.cc @@ -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); diff --git a/src/stream_base.cc b/src/stream_base.cc index 925dc3f152e..b2992f9a051 100644 --- a/src/stream_base.cc +++ b/src/stream_base.cc @@ -338,7 +338,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[] = { diff --git a/src/string_bytes.cc b/src/string_bytes.cc index 556dba97c09..daff1424d22 100644 --- a/src/string_bytes.cc +++ b/src/string_bytes.cc @@ -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; diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index e746f62c5ed..10a5fd929f6 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -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; @@ -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); |