aboutsummaryrefslogtreecommitdiffstats
path: root/src/headerField.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/headerField.cpp')
-rw-r--r--src/headerField.cpp11
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>();
}