mirror of
https://github.com/esphome/esphome.git
synced 2025-08-04 09:27:47 +00:00
[core] Replace std::find and std::max_element with simple loops to reduce binary size (#10044)
This commit is contained in:
parent
b44d2183aa
commit
dbaf2cdd50
@ -459,24 +459,25 @@ void Application::unregister_socket_fd(int fd) {
|
|||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto it = std::find(this->socket_fds_.begin(), this->socket_fds_.end(), fd);
|
for (size_t i = 0; i < this->socket_fds_.size(); i++) {
|
||||||
if (it != this->socket_fds_.end()) {
|
if (this->socket_fds_[i] != fd)
|
||||||
|
continue;
|
||||||
|
|
||||||
// Swap with last element and pop - O(1) removal since order doesn't matter
|
// Swap with last element and pop - O(1) removal since order doesn't matter
|
||||||
if (it != this->socket_fds_.end() - 1) {
|
if (i < this->socket_fds_.size() - 1)
|
||||||
std::swap(*it, this->socket_fds_.back());
|
this->socket_fds_[i] = this->socket_fds_.back();
|
||||||
}
|
|
||||||
this->socket_fds_.pop_back();
|
this->socket_fds_.pop_back();
|
||||||
this->socket_fds_changed_ = true;
|
this->socket_fds_changed_ = true;
|
||||||
|
|
||||||
// Only recalculate max_fd if we removed the current max
|
// Only recalculate max_fd if we removed the current max
|
||||||
if (fd == this->max_fd_) {
|
if (fd == this->max_fd_) {
|
||||||
if (this->socket_fds_.empty()) {
|
this->max_fd_ = -1;
|
||||||
this->max_fd_ = -1;
|
for (int sock_fd : this->socket_fds_) {
|
||||||
} else {
|
if (sock_fd > this->max_fd_)
|
||||||
// Find new max using std::max_element
|
this->max_fd_ = sock_fd;
|
||||||
this->max_fd_ = *std::max_element(this->socket_fds_.begin(), this->socket_fds_.end());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user