diff options
| author | Lars Ingebrigtsen | 2016-01-29 00:36:11 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2016-01-29 00:36:11 +0100 |
| commit | 44e235dd88d3f506b31db24373c0f5d5fd27c79d (patch) | |
| tree | 80d8eaab284ccbdfae58d84a9586d58dc886211d /src/process.c | |
| parent | 7c6a60fa2c7f7c8b3f5b2effdda1b3ce9e231071 (diff) | |
| download | emacs-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.c | 4 |
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 | ||