diff options
Diffstat (limited to 'ext/socket/ipsocket.c')
-rw-r--r-- | ext/socket/ipsocket.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/socket/ipsocket.c b/ext/socket/ipsocket.c index 3e497a43be..ff35682486 100644 --- a/ext/socket/ipsocket.c +++ b/ext/socket/ipsocket.c @@ -1168,9 +1168,13 @@ fast_fallback_inetsock_cleanup(VALUE v) rb_nativethread_lock_unlock(&getaddrinfo_shared->lock); for (int i = 0; i < arg->family_size; i++) { - if (need_free[i]) free_fast_fallback_getaddrinfo_entry(&arg->getaddrinfo_entries[i]); + if (arg->getaddrinfo_entries[i] && need_free[i]) { + free_fast_fallback_getaddrinfo_entry(&arg->getaddrinfo_entries[i]); + } + } + if (getaddrinfo_shared && shared_need_free) { + free_fast_fallback_getaddrinfo_shared(&getaddrinfo_shared); } - if (shared_need_free) free_fast_fallback_getaddrinfo_shared(&getaddrinfo_shared); } int connection_attempt_fd; |