version 1.1, 2016/11/02 09:57:01
|
version 1.1.1.3, 2023/09/27 11:02:07
|
Line 1
|
Line 1
|
/* dnsmasq is Copyright (c) 2000-2016 Simon Kelley | /* dnsmasq is Copyright (c) 2000-2022 Simon Kelley |
|
|
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
Line 96 void poll_listen(int fd, short event)
|
Line 96 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; |
|
|
arrsize = (arrsize == 0) ? 64 : arrsize * 2; |
arrsize = (arrsize == 0) ? 64 : arrsize * 2; |
|
|
if (!(new = whine_malloc(arrsize * sizeof(struct pollfd)))) | if (!(new = whine_realloc(pollfds, arrsize * sizeof(struct pollfd)))) |
return; |
return; |
|
|
if (pollfds) |
|
{ |
|
memcpy(new, pollfds, i * sizeof(struct pollfd)); |
|
memcpy(&new[i+1], &pollfds[i], (nfds - i) * sizeof(struct pollfd)); |
|
free(pollfds); |
|
} |
|
|
|
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++; |