Skip to content

Commit 40a1e61

Browse files
committed
eloop: Work with fortified compilers
1 parent 4d0881f commit 40a1e61

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/eloop.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ static int
242242
eloop_signal_kqueue(struct eloop *eloop, const int *signals, size_t nsignals)
243243
{
244244
unsigned int cmd = nsignals == 0 ? EV_DELETE : EV_ADD;
245+
struct kevent *ke, *kep;
246+
size_t i;
247+
int err;
245248

246249
if (nsignals == 0) {
247250
signals = eloop->signals;
@@ -250,14 +253,17 @@ eloop_signal_kqueue(struct eloop *eloop, const int *signals, size_t nsignals)
250253
if (nsignals == 0)
251254
return 0;
252255

253-
struct kevent ke[nsignals], *kep = ke;
254-
size_t i;
256+
ke = kep = eloop_realloca(NULL, nsignals, sizeof(*ke));
257+
if (ke == NULL)
258+
return -1;
255259

256260
for (i = 0; i < nsignals; i++)
257261
EV_SET(kep++, (uintptr_t)signals[i], EVFILT_SIGNAL, cmd, 0, 0,
258262
NULL);
259263

260-
return kevent(eloop->fd, ke, (KEVENT_N)nsignals, NULL, 0, NULL);
264+
err = kevent(eloop->fd, ke, (KEVENT_N)nsignals, NULL, 0, NULL);
265+
free(ke);
266+
return err;
261267
}
262268

263269
static int

0 commit comments

Comments
 (0)