diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Transform/Data.cpp | 8 | ||||
-rw-r--r-- | cpp/src/Transform/Data.h | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/cpp/src/Transform/Data.cpp b/cpp/src/Transform/Data.cpp index f2f02bfcead..83a3cbbce02 100644 --- a/cpp/src/Transform/Data.cpp +++ b/cpp/src/Transform/Data.cpp @@ -2823,7 +2823,7 @@ Transform::DictionaryData::transform(const DataPtr& data, DataInterceptor& inter { if(interceptor.preTransform(this, data)) { - transformI(data, interceptor); + transformI(data, interceptor, false); } interceptor.postTransform(this, data); } @@ -2837,7 +2837,7 @@ Transform::DictionaryData::set(const DataPtr& value, DataInterceptor& intercepto } else { - transformI(value, interceptor); + transformI(value, interceptor, true); } } @@ -2947,7 +2947,7 @@ Transform::DictionaryData::printI(IceUtil::Output& out, ObjectDataHistory& histo } void -Transform::DictionaryData::transformI(const DataPtr& data, DataInterceptor& interceptor) +Transform::DictionaryData::transformI(const DataPtr& data, DataInterceptor& interceptor, bool checkTypes) { DictionaryDataPtr d = DictionaryDataPtr::dynamicCast(data); if(d && isCompatible(_type, d->_type, interceptor)) @@ -3002,7 +3002,7 @@ Transform::DictionaryData::transformI(const DataPtr& data, DataInterceptor& inte _map = m; _length = _factory->createInteger(static_cast<Ice::Long>(_map.size()), true); } - else + else if(checkTypes) { _errorReporter->typeMismatchError(_type, data->getType(), false); } diff --git a/cpp/src/Transform/Data.h b/cpp/src/Transform/Data.h index 0f520e0d2a4..fba4a753ddb 100644 --- a/cpp/src/Transform/Data.h +++ b/cpp/src/Transform/Data.h @@ -538,7 +538,7 @@ private: DictionaryData(const DataFactoryPtr&, const Slice::DictionaryPtr&, const ErrorReporterPtr&, bool, const DataMap&); - void transformI(const DataPtr&, DataInterceptor&); + void transformI(const DataPtr&, DataInterceptor&, bool); DataFactoryPtr _factory; Slice::DictionaryPtr _type; |