skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

commit 16de50671c7ad77f2acb4ca19d8806aad0490f03
parent ded707de84a7b1f36a395299ff945c2b2e069bff
Author: Laurent Bercot <ska-skaware@skarnet.org>
Date:   Sat, 10 Jan 2015 23:39:33 +0000

 Without a segfault in unixmessage_sender_free, please.

Diffstat:
Msrc/libunixonacid/unixmessage_sender_free.c | 13++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/libunixonacid/unixmessage_sender_free.c b/src/libunixonacid/unixmessage_sender_free.c @@ -9,15 +9,18 @@ void unixmessage_sender_free (unixmessage_sender_t *b) { - unsigned int i = genalloc_s(diuint, &b->offsets)[b->head].right ; unsigned int n = genalloc_len(int, &b->fds) ; - for (; i < n ; i++) + if (n) { - register int fd = genalloc_s(int, &b->fds)[i] ; - if (fd < 0) fd_close(-(fd+1)) ; + unsigned int i = genalloc_s(diuint, &b->offsets)[b->head].right ; + for (; i < n ; i++) + { + register int fd = genalloc_s(int, &b->fds)[i] ; + if (fd < 0) fd_close(-(fd+1)) ; #ifdef SKALIBS_HASANCILAUTOCLOSE - else fd_close(fd) ; + else fd_close(fd) ; #endif + } } genalloc_free(diuint, &b->offsets) ; genalloc_free(int, &b->fds) ;