Fix struct member initialization issue in getaddrinfo_with_timeout #2273
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current member initialization for
struct GetAddrInfoStatedoes not work as thenodeon the right side of the assignment refers to the membernodeofstruct GetAddrInfoState, which is empty for debug build and uninitialized for optimized build, instead of thenodethe function parameter.This results in the following
getaddrinfogetting called with unexpected parameters, thus it is yielding unexpected result. I found this issue on Android, and probably this also applies to platforms other than those in the#if.Also this change fixes a potential memory leak. When timeout is hit on line 3857, and the
getaddrinfosucceeds in the end, thestate->infowill be assigned to the pointer of a newstruct addrinfoallocated bygetaddrinfo, while no one will free that. This change adds a destructor onGetAddrInfoStateto manage the lifecycle of that.