diff options
author | leeight <leeight@gmail.com> | 2018-11-19 12:31:26 +0800 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-12-01 18:57:00 +0100 |
commit | adbf9477eb244b0f83a705b06269705967194f03 (patch) | |
tree | 1d69b9665e912f3a6b2925e4998589c4a8f1676b /src | |
parent | 82ceb5e4b1f0114361fca617799caa04725bee1b (diff) | |
download | android-node-v8-adbf9477eb244b0f83a705b06269705967194f03.tar.gz android-node-v8-adbf9477eb244b0f83a705b06269705967194f03.tar.bz2 android-node-v8-adbf9477eb244b0f83a705b06269705967194f03.zip |
src: use arraysize instead of hardcode number
PR-URL: https://github.com/nodejs/node/pull/24473
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/node_os.cc | 7 | ||||
-rw-r--r-- | src/node_url.cc | 7 | ||||
-rw-r--r-- | src/util.h | 9 |
3 files changed, 17 insertions, 6 deletions
diff --git a/src/node_os.cc b/src/node_os.cc index 9e5530646a..fa38040e3a 100644 --- a/src/node_os.cc +++ b/src/node_os.cc @@ -22,6 +22,7 @@ #include "node_internals.h" #include "string_bytes.h" +#include <array> #include <errno.h> #include <string.h> @@ -219,7 +220,7 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo<Value>& args) { int count, i; char ip[INET6_ADDRSTRLEN]; char netmask[INET6_ADDRSTRLEN]; - char mac[18]; + std::array<char, 18> mac; Local<Object> ret, o; Local<String> name, family; Local<Array> ifarr; @@ -256,8 +257,8 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo<Value>& args) { ret->Set(env->context(), name, ifarr).FromJust(); } - snprintf(mac, - 18, + snprintf(mac.data(), + mac.size(), "%02x:%02x:%02x:%02x:%02x:%02x", static_cast<unsigned char>(interfaces[i].phys_addr[0]), static_cast<unsigned char>(interfaces[i].phys_addr[1]), diff --git a/src/node_url.cc b/src/node_url.cc index 57be5418aa..b9fda6cf43 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -787,10 +787,11 @@ inline bool ToASCII(const std::string& input, std::string* output) { void URLHost::ParseIPv6Host(const char* input, size_t length) { CHECK_EQ(type_, HostType::H_FAILED); - for (unsigned n = 0; n < 8; n++) + unsigned size = arraysize(value_.ipv6); + for (unsigned n = 0; n < size; n++) value_.ipv6[n] = 0; uint16_t* piece_pointer = &value_.ipv6[0]; - uint16_t* const buffer_end = piece_pointer + 8; + uint16_t* const buffer_end = piece_pointer + size; uint16_t* compress_pointer = nullptr; const char* pointer = input; const char* end = pointer + length; @@ -952,7 +953,7 @@ void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) { const char ch = pointer < end ? pointer[0] : kEOL; const int remaining = end - pointer - 1; if (ch == '.' || ch == kEOL) { - if (++parts > 4) + if (++parts > static_cast<int>(arraysize(numbers))) return; if (pointer == mark) return; diff --git a/src/util.h b/src/util.h index 086e33933e..9dd39fe186 100644 --- a/src/util.h +++ b/src/util.h @@ -37,6 +37,7 @@ #include <functional> // std::function #include <set> #include <string> +#include <array> #include <unordered_map> namespace node { @@ -223,6 +224,14 @@ inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING( return OneByteString(isolate, data, N - 1); } +template <std::size_t N> +inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING( + v8::Isolate* isolate, + const std::array<char, N>& arr) { + return OneByteString(isolate, arr.data(), N - 1); +} + + // Swaps bytes in place. nbytes is the number of bytes to swap and must be a // multiple of the word size (checked by function). |