util: use std::array

This commit is contained in:
Michele Caini 2024-10-23 09:17:06 +02:00
parent 3a8c06fe5b
commit 949e46642a
2 changed files with 10 additions and 11 deletions

View File

@ -252,9 +252,9 @@ static constexpr std::size_t DEFAULT_SIZE = 128;
template<typename F, typename... Args>
[[nodiscard]] std::string try_read(F &&f, Args &&...args) {
std::size_t size = DEFAULT_SIZE;
char buf[DEFAULT_SIZE];
std::array<char, DEFAULT_SIZE> buf{};
std::string str{};
auto err = std::forward<F>(f)(args..., buf, &size);
auto err = std::forward<F>(f)(args..., buf.data(), &size);
if(UV_ENOBUFS == err) {
auto data = std::make_unique<char[]>(size);
@ -264,7 +264,7 @@ template<typename F, typename... Args>
str = data.get();
}
} else if(0 == err) {
str.assign(buf, size);
str.assign(buf.data(), size);
}
return str;

View File

@ -69,16 +69,16 @@ UVW_INLINE sockaddr ip_addr(const char *addr, unsigned int port) {
}
UVW_INLINE socket_address sock_addr(const sockaddr_in &addr) {
if(char name[details::DEFAULT_SIZE]; uv_ip4_name(&addr, name, details::DEFAULT_SIZE) == 0) {
return socket_address{std::string{name}, ntohs(addr.sin_port)};
if(std::array<char, details::DEFAULT_SIZE> name{}; uv_ip4_name(&addr, name.data(), details::DEFAULT_SIZE) == 0) {
return socket_address{std::string{name.data()}, ntohs(addr.sin_port)};
}
return socket_address{};
}
UVW_INLINE socket_address sock_addr(const sockaddr_in6 &addr) {
if(char name[details::DEFAULT_SIZE]; uv_ip6_name(&addr, name, details::DEFAULT_SIZE) == 0) {
return socket_address{std::string{name}, ntohs(addr.sin6_port)};
if(std::array<char, details::DEFAULT_SIZE> name{}; uv_ip6_name(&addr, name.data(), details::DEFAULT_SIZE) == 0) {
return socket_address{std::string{name.data()}, ntohs(addr.sin6_port)};
}
return socket_address{};
@ -282,12 +282,11 @@ UVW_INLINE char **utilities::setup_args(int argc, char **argv) {
}
UVW_INLINE std::string utilities::process_title() {
std::size_t size = details::DEFAULT_SIZE;
char buf[details::DEFAULT_SIZE];
std::array<char, details::DEFAULT_SIZE> buf{};
std::string str{};
if(0 == uv_get_process_title(buf, size)) {
str.assign(buf, size);
if(0 == uv_get_process_title(buf.data(), details::DEFAULT_SIZE)) {
str.assign(buf.data(), details::DEFAULT_SIZE);
}
return str;