From e933e93b508a78a0de91bf14f4be371fd592d4e4 Mon Sep 17 00:00:00 2001 From: Aleksandar Fabijanic Date: Tue, 13 May 2008 01:41:27 +0000 Subject: [PATCH] DynamicAny::extract performance optimization --- Foundation/include/Poco/DynamicAny.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Foundation/include/Poco/DynamicAny.h b/Foundation/include/Poco/DynamicAny.h index e8fab2f34..e4b824932 100644 --- a/Foundation/include/Poco/DynamicAny.h +++ b/Foundation/include/Poco/DynamicAny.h @@ -168,13 +168,15 @@ public: /// the stored value, otherwise a BadCastException /// is thrown. { - DynamicAnyHolderImpl* pHolder = dynamic_cast*>(_pHolder); - if (pHolder) - return pHolder->value(); + if (_pHolder && _pHolder->type() == typeid(T)) + { + DynamicAnyHolderImpl* pHolder = static_cast*>(_pHolder); + return pHolder->value(); + } else - throw BadCastException(); - } - + throw BadCastException(); + } + template DynamicAny& operator = (const T& other) /// Assignment operator for assigning POD to DynamicAny