@@ -368,18 +368,18 @@ STATIC mp_obj_t mod_socket_getaddrinfo(uint n_args, const mp_obj_t *args) {
368368 }
369369
370370 struct addrinfo hints ;
371- struct addrinfo * addr ;
371+ struct addrinfo * addr_list ;
372372 memset (& hints , 0 , sizeof (hints ));
373- int res = getaddrinfo (host , serv , NULL /*&hints*/ , & addr );
373+ int res = getaddrinfo (host , serv , NULL /*&hints*/ , & addr_list );
374374
375375 if (res != 0 ) {
376376 // CPython: socket.gaierror
377377 nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_OSError , "[addrinfo error %d]" , res ));
378378 }
379- assert (addr );
379+ assert (addr_list );
380380
381381 mp_obj_t list = mp_obj_new_list (0 , NULL );
382- for (; addr ; addr = addr -> ai_next ) {
382+ for (struct addrinfo * addr = addr_list ; addr ; addr = addr -> ai_next ) {
383383 mp_obj_tuple_t * t = mp_obj_new_tuple (5 , NULL );
384384 t -> items [0 ] = MP_OBJ_NEW_SMALL_INT ((machine_int_t )addr -> ai_family );
385385 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) {
394394 t -> items [4 ] = mp_obj_new_bytearray (addr -> ai_addrlen , addr -> ai_addr );
395395 mp_obj_list_append (list , t );
396396 }
397+ freeaddrinfo (addr_list );
397398 return list ;
398399}
399400STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mod_socket_getaddrinfo_obj , 2 , 6 , mod_socket_getaddrinfo );
0 commit comments