From 7067b7b6b13e80e5dde8e498848385244db2a072 Mon Sep 17 00:00:00 2001 From: Florent Lamiraux <florent@laas.fr> Date: Mon, 24 Sep 2012 11:12:01 +0200 Subject: [PATCH] Do not try to delete void*, behavior is undefined. --- include/dynamic-graph/value.h | 1 + src/command/value.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/dynamic-graph/value.h b/include/dynamic-graph/value.h index 5630552..471e780 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 ddb616a..bc62d2b 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); } -- GitLab