diff options
Diffstat (limited to 'src/headerField.cpp')
-rw-r--r-- | src/headerField.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/headerField.cpp b/src/headerField.cpp index 0a17abac..59b10e76 100644 --- a/src/headerField.cpp +++ b/src/headerField.cpp @@ -26,6 +26,8 @@ #include "vmime/parserHelpers.hpp" +#include "vmime/exception.hpp" + namespace vmime { @@ -324,6 +326,9 @@ ref <headerFieldValue> headerField::getValue() void headerField::setValue(ref <headerFieldValue> value) { + if (!headerFieldFactory::getInstance()->isValueTypeValid(*this, *value)) + throw exceptions::bad_field_value_type(getName()); + if (value != NULL) m_value = value; } @@ -331,12 +336,18 @@ void headerField::setValue(ref <headerFieldValue> value) void headerField::setValueConst(ref <const headerFieldValue> value) { + if (!headerFieldFactory::getInstance()->isValueTypeValid(*this, *value)) + throw exceptions::bad_field_value_type(getName()); + m_value = value->clone().dynamicCast <headerFieldValue>(); } void headerField::setValue(const headerFieldValue& value) { + if (!headerFieldFactory::getInstance()->isValueTypeValid(*this, value)) + throw exceptions::bad_field_value_type(getName()); + m_value = value.clone().dynamicCast <headerFieldValue>(); } |