Opened 14 years ago
Closed 13 years ago
#2782 closed Bugs (fixed)
boost::program_options::notify crashes when variables_map contains user inserted values
Reported by: | Owned by: | Vladimir Prus | |
---|---|---|---|
Milestone: | Boost 1.39.0 | Component: | program_options |
Version: | Boost 1.38.0 | Severity: | Problem |
Keywords: | Cc: |
Description
variables_map is useful as a generic properties map (esp. due to its various parsers). But when variables_map contains user inserted values (a properties map would support adding/setting values. variables_map does allow base std::map::insert being called), notify would crash/segfault/die due to m_value_semantic being null (empty shared_ptr).
I suggest that a simple check be added to the notify function before calling (*it).second.m_value_semantic->notify()
This would make it a lot more convenient for those who build a properties wrapper around program_options. Thanks.
Change History (4)
comment:1 by , 14 years ago
Component: | None → program_options |
---|---|
Owner: | set to |
comment:2 by , 14 years ago
comment:3 by , 14 years ago
Here is a use case that arises from modular multi-component options processing: a variables_map is passed to the init functions of components, where their options are parsed. Sometimes, I want to set some property values after parsing in one component and then the variables_map is passed to another component for further processing with its own set options. This currently doesn't work due to the notify crash.
My current workaround is don't call notify ever and missing out 2 nice features (setting a variable via typed_value and of course notifier itself.)
comment:4 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Why are you calling 'notify' *after* adding your own values? I am not saying this is wrong, just trying to understand your use case.