From bb90989dbf6077044403da6727831aebe3f6f6bd Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 23 Nov 2018 15:49:40 -0200 Subject: [PATCH] Fixing memory leaks. --- src/lib3270/iocalls.c | 4 +++- src/lib3270/session.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/lib3270/iocalls.c b/src/lib3270/iocalls.c index 945c19e..6358587 100644 --- a/src/lib3270/iocalls.c +++ b/src/lib3270/iocalls.c @@ -204,6 +204,8 @@ static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, vo ip->userdata = userdata; ip->call = call; + ip->next = session->inputs; + session->inputs = ip; session->inputs_changed = 1; @@ -565,7 +567,7 @@ static int internal_wait(H3270 *hSession, int seconds) return 0; } -static void internal_ring_bell(H3270 *session) +static void internal_ring_bell(H3270 *session unused) { return; } diff --git a/src/lib3270/session.c b/src/lib3270/session.c index 8e5392b..1d3fdce 100644 --- a/src/lib3270/session.c +++ b/src/lib3270/session.c @@ -108,6 +108,26 @@ void lib3270_session_free(H3270 *h) release_pointer(h->text); release_pointer(h->zero_buf); + release_pointer(h->sbbuf); + release_pointer(h->tabs); + + // Release timeouts + while(h->timeouts) + { + timeout_t *t = h->timeouts; + h->timeouts = t->next; + + lib3270_free(t); + } + + // Release inputs; + while(h->inputs) + { + input_t *ip = h->inputs; + h->inputs = ip->next; + lib3270_free(ip); + } + trace("Releasing session %p",h); lib3270_free(h); -- libgit2 0.21.2