diff --git a/include/dynamic-graph/value.h b/include/dynamic-graph/value.h index 5630552a50036c2972c891235b981fb1722365f8..471e7805dfa3df0834c6104b9ae2bc5a04ba9380 100644 --- a/include/dynamic-graph/value.h +++ b/include/dynamic-graph/value.h @@ -59,6 +59,7 @@ namespace dynamicgraph { NB_TYPES }; ~Value(); + void deleteValue (); explicit Value(const bool& value); explicit Value(const unsigned& value); explicit Value(const int& value); diff --git a/src/command/value.cpp b/src/command/value.cpp index ddb616aeaf0eb12a812e160d1d02aff2b369cabe..bc62d2b89c4f04ec4a6c2945d42bf1801eb96e65 100644 --- a/src/command/value.cpp +++ b/src/command/value.cpp @@ -67,7 +67,7 @@ namespace dynamicgraph { return value_->matrixValue(); } - Value::~Value() + void Value::deleteValue () { switch(type_) { case BOOL: @@ -98,6 +98,11 @@ namespace dynamicgraph { } } + Value::~Value() + { + deleteValue (); + } + Value::Value(const bool& value) : type_(BOOL), value_(new bool(value)) { } @@ -179,9 +184,9 @@ namespace dynamicgraph { Value Value::operator=(const Value& value) { if (&value != this) { - type_ = value.type_; if(value_ != 0x0) - delete value_; + deleteValue (); + type_ = value.type_; void** ptValue = const_cast<void**>(&value_); *ptValue = copyValue(value); }