aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
authorLars Ingebrigtsen2016-01-29 00:36:11 +0100
committerLars Ingebrigtsen2016-01-29 00:36:11 +0100
commit44e235dd88d3f506b31db24373c0f5d5fd27c79d (patch)
tree80d8eaab284ccbdfae58d84a9586d58dc886211d /src/process.c
parent7c6a60fa2c7f7c8b3f5b2effdda1b3ce9e231071 (diff)
downloademacs-44e235dd88d3f506b31db24373c0f5d5fd27c79d.tar.gz
emacs-44e235dd88d3f506b31db24373c0f5d5fd27c79d.zip
Fix memory leak
* process.c (connect_network_socket): Free previous sockaddr before allocating a new one.
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/process.c b/src/process.c
index 2f7668a555e..b5d306f7de9 100644
--- a/src/process.c
+++ b/src/process.c
@@ -3005,7 +3005,7 @@ void connect_network_socket (Lisp_Object proc, Lisp_Object ip_addresses)
3005 int xerrno = 0; 3005 int xerrno = 0;
3006 Lisp_Object ip_address; 3006 Lisp_Object ip_address;
3007 int family; 3007 int family;
3008 struct sockaddr *sa; 3008 struct sockaddr *sa = NULL;
3009 int ret; 3009 int ret;
3010 int addrlen; 3010 int addrlen;
3011 struct Lisp_Process *p = XPROCESS (proc); 3011 struct Lisp_Process *p = XPROCESS (proc);
@@ -3026,6 +3026,8 @@ void connect_network_socket (Lisp_Object proc, Lisp_Object ip_addresses)
3026#endif 3026#endif
3027 3027
3028 addrlen = get_lisp_to_sockaddr_size (ip_address, &family); 3028 addrlen = get_lisp_to_sockaddr_size (ip_address, &family);
3029 if (sa)
3030 free (sa);
3029 sa = alloca (addrlen); 3031 sa = alloca (addrlen);
3030 conv_lisp_to_sockaddr (family, ip_address, sa, addrlen); 3032 conv_lisp_to_sockaddr (family, ip_address, sa, addrlen);
3031 3033