Simplify realloc use in poll.c

This commit is contained in:
Simon Kelley
2022-08-11 17:04:54 +01:00
parent 0666ae3d27
commit 09d741f58a

View File

@@ -96,9 +96,7 @@ void poll_listen(int fd, short event)
pollfds[i].events |= event; pollfds[i].events |= event;
else else
{ {
if (arrsize != nfds) if (arrsize == nfds)
memmove(&pollfds[i+1], &pollfds[i], (nfds - i) * sizeof(struct pollfd));
else
{ {
/* Array too small, extend. */ /* Array too small, extend. */
struct pollfd *new; struct pollfd *new;
@@ -108,17 +106,11 @@ void poll_listen(int fd, short event)
if (!(new = whine_realloc(pollfds, arrsize * sizeof(struct pollfd)))) if (!(new = whine_realloc(pollfds, arrsize * sizeof(struct pollfd))))
return; return;
if (pollfds)
{
memmove(&new[i+1], &new[i], (nfds - i) * sizeof(struct pollfd));
/* clear remaining space with zeroes. */
if (nfds+1 < arrsize)
memset(new+nfds+1, 0, arrsize-nfds-1);
}
pollfds = new; pollfds = new;
} }
memmove(&pollfds[i+1], &pollfds[i], (nfds - i) * sizeof(struct pollfd));
pollfds[i].fd = fd; pollfds[i].fd = fd;
pollfds[i].events = event; pollfds[i].events = event;
nfds++; nfds++;