aboutsummaryrefslogtreecommitdiffstats
path: root/src/headerField.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2013-02-27 13:59:37 +0000
committerVincent Richard <[email protected]>2013-02-27 13:59:37 +0000
commit8378b350dfc612673d1ba3597e9d5bb1347ae944 (patch)
tree64212cb2e9e70c23ec25fa209ba1bb15a064067d /src/headerField.cpp
parentFixed wrong function called. (diff)
downloadvmime-8378b350dfc612673d1ba3597e9d5bb1347ae944.tar.gz
vmime-8378b350dfc612673d1ba3597e9d5bb1347ae944.zip
Throw exception when an invalid value type is set in a header field.
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>();
}