ConditionLock deallocs its pthread_cond_t in more cases #2901
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.
Motivation:
Recently we changed the init and deinit behavior of
ConditionLock
, at that time theUnsafeMutablePointer
allocation of the heldpthread_cond_t
was put behind a conditional compiler and runtime check. The deallocation of the same object was also put behind a conditional, however the conditions were mismatched leading to a leak on some platforms. Notably this surfaced whenwait
ing on an event loop future.Modifications:
ConditionLock.deinit
now deallocs the heldpthread_cond_t
under the same conditions in which it allocs it.Result:
Creating a
ConditionLock
no longer leaks memory.