Fix for Potential memory leak in class ServiceArgumentParser's Constr… #8368
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.
Fixes #8351
What changed ?
This is a corner case scenario where there is a potential for a memory leak. For this leak to occur, two things must happen:
When a
nullptr
is returned, as part of cleaning up the heap memory allocated, thecleanArgs()
function is called. However, this function will only clean up the memory if the Boolean variableowns_argv_ptrs
is set totrue
. In this case, as the variable is still false, the function will only remove all elements from the vector.Later, when the Boolean variable
owns_argv_ptrs
is set to true and the destructor gets a chance to clean up, it cannot do anything as the elements are already removed and the vector size is zero.Therefore, the fix is to set the
owns_argv_ptrs_ = true;
immediately after the CommandLineToArgvW returns successfully, thus incorporating the code review comment give by michael-myers this will speed up the memory clean up process, rather than wait for the destructor to do the job.