aboutsummaryrefslogtreecommitdiffstats
path: root/src/headerFieldFactory.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/headerFieldFactory.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/headerFieldFactory.cpp')
-rw-r--r--src/headerFieldFactory.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/headerFieldFactory.cpp b/src/headerFieldFactory.cpp
index e1c725c0..7e021f59 100644
--- a/src/headerFieldFactory.cpp
+++ b/src/headerFieldFactory.cpp
@@ -126,7 +126,7 @@ ref <headerFieldValue> headerFieldFactory::createValue(const string& fieldName)
ref <headerFieldValue> value = NULL;
if (pos != m_valueMap.end())
- value = ((*pos).second)();
+ value = ((*pos).second.allocFunc)();
else
value = registerer <headerFieldValue, text>::creator();
@@ -134,5 +134,18 @@ ref <headerFieldValue> headerFieldFactory::createValue(const string& fieldName)
}
+bool headerFieldFactory::isValueTypeValid
+ (const headerField& field, const headerFieldValue& value) const
+{
+ ValueMap::const_iterator pos = m_valueMap.find
+ (utility::stringUtils::toLower(field.getName()));
+
+ if (pos != m_valueMap.end())
+ return ((*pos).second.checkTypeFunc)(value);
+
+ return true; // No info on this field
+}
+
+
} // vmime