summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-22 19:11:34 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-22 19:11:34 +0300
commit949a49c9da9f8adb64bdddbd8f0258eaa881df2f (patch)
treede0289f2c6e73a4c035b5782dd04c66aaca3ecff
parent69d0a1c540da569e0a70d2102ed8463debfe3ccf (diff)
downloadmicropython-949a49c9da9f8adb64bdddbd8f0258eaa881df2f.tar.gz
micropython-949a49c9da9f8adb64bdddbd8f0258eaa881df2f.zip
modsocket: Add call to freeaddrinfo().
-rw-r--r--unix/modsocket.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/unix/modsocket.c b/unix/modsocket.c
index 8c5c9706c6..457dc81671 100644
--- a/unix/modsocket.c
+++ b/unix/modsocket.c
@@ -368,18 +368,18 @@ STATIC mp_obj_t mod_socket_getaddrinfo(uint n_args, const mp_obj_t *args) {
}
struct addrinfo hints;
- struct addrinfo *addr;
+ struct addrinfo *addr_list;
memset(&hints, 0, sizeof(hints));
- int res = getaddrinfo(host, serv, NULL/*&hints*/, &addr);
+ int res = getaddrinfo(host, serv, NULL/*&hints*/, &addr_list);
if (res != 0) {
// CPython: socket.gaierror
nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_OSError, "[addrinfo error %d]", res));
}
- assert(addr);
+ assert(addr_list);
mp_obj_t list = mp_obj_new_list(0, NULL);
- for (; addr; addr = addr->ai_next) {
+ for (struct addrinfo *addr = addr_list; addr; addr = addr->ai_next) {
mp_obj_tuple_t *t = mp_obj_new_tuple(5, NULL);
t->items[0] = MP_OBJ_NEW_SMALL_INT((machine_int_t)addr->ai_family);
t->items[1] = MP_OBJ_NEW_SMALL_INT((machine_int_t)addr->ai_socktype);
@@ -394,6 +394,7 @@ STATIC mp_obj_t mod_socket_getaddrinfo(uint n_args, const mp_obj_t *args) {
t->items[4] = mp_obj_new_bytearray(addr->ai_addrlen, addr->ai_addr);
mp_obj_list_append(list, t);
}
+ freeaddrinfo(addr_list);
return list;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_socket_getaddrinfo_obj, 2, 6, mod_socket_getaddrinfo);