testprog.cpp: test case and fix for segfaults when using OptionGroup #6
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.
Class OptionParser stored only pointers to option groups when using
add_option_group(). This can lead to the case where arguments are parsed
long after an OptionGroup went out of scope, leading to memory access to
freed memory and often to segmentation faults (the changed testprog.cpp
demonstrates this).
This can easily happen if a parser is configured in an external function
like this
auto parser = optparse::OptionParser();
setupParser(parser);
Fix:
Class OptionParser now stores option groups instead of pointers to them.
Pro:
Con:
via add_option_group(). Should this be needed, then a bigger rewrite
would be necessary where the parser uses a factory function which
creates and stores new option groups and returns a pointer/reference to
them.