mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-13 10:32:57 +01:00
#3507: Reference counting for bound configuration in Util::Option is broken
This commit is contained in:
parent
3b1484ca50
commit
010cf8b7d0
@ -126,7 +126,7 @@ public:
|
||||
///
|
||||
/// The configuration will automatically receive the option's argument.
|
||||
|
||||
Option& binding(const std::string& propertyName, AbstractConfiguration* pConfig);
|
||||
Option& binding(const std::string& propertyName, AbstractConfiguration::Ptr pConfig);
|
||||
/// Binds the option to the configuration property with the given name,
|
||||
/// using the given AbstractConfiguration.
|
||||
///
|
||||
|
@ -32,8 +32,7 @@ Option::Option():
|
||||
_repeatable(false),
|
||||
_argRequired(false),
|
||||
_pValidator(0),
|
||||
_pCallback(0),
|
||||
_pConfig(0)
|
||||
_pCallback(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -54,7 +53,6 @@ Option::Option(const Option& option):
|
||||
{
|
||||
if (_pValidator) _pValidator->duplicate();
|
||||
if (_pCallback) _pCallback = _pCallback->clone();
|
||||
if (_pConfig) _pConfig->duplicate();
|
||||
}
|
||||
|
||||
|
||||
@ -65,8 +63,7 @@ Option::Option(const std::string& fullName, const std::string& shortName):
|
||||
_repeatable(false),
|
||||
_argRequired(false),
|
||||
_pValidator(0),
|
||||
_pCallback(0),
|
||||
_pConfig(0)
|
||||
_pCallback(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -79,8 +76,7 @@ Option::Option(const std::string& fullName, const std::string& shortName, const
|
||||
_repeatable(false),
|
||||
_argRequired(false),
|
||||
_pValidator(0),
|
||||
_pCallback(0),
|
||||
_pConfig(0)
|
||||
_pCallback(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -94,8 +90,7 @@ Option::Option(const std::string& fullName, const std::string& shortName, const
|
||||
_argName(argName),
|
||||
_argRequired(argRequired),
|
||||
_pValidator(0),
|
||||
_pCallback(0),
|
||||
_pConfig(0)
|
||||
_pCallback(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -103,7 +98,6 @@ Option::Option(const std::string& fullName, const std::string& shortName, const
|
||||
Option::~Option()
|
||||
{
|
||||
if (_pValidator) _pValidator->release();
|
||||
if (_pConfig) _pConfig->release();
|
||||
delete _pCallback;
|
||||
}
|
||||
|
||||
@ -200,12 +194,10 @@ Option& Option::binding(const std::string& propertyName)
|
||||
}
|
||||
|
||||
|
||||
Option& Option::binding(const std::string& propertyName, AbstractConfiguration* pConfig)
|
||||
Option& Option::binding(const std::string& propertyName, AbstractConfiguration::Ptr pConfig)
|
||||
{
|
||||
_binding = propertyName;
|
||||
if (_pConfig) _pConfig->release();
|
||||
_pConfig = pConfig;
|
||||
if (_pConfig) _pConfig->duplicate();
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user