From 52f8f4361fbf5f5fbf5ab7d64fd226be1b2bca79 Mon Sep 17 00:00:00 2001 From: Johnny Willemsen Date: Fri, 30 Sep 2005 10:45:58 +0000 Subject: ChangeLogTag: Fri Sep 30 10:41:12 UTC 2005 Johnny Willemsen --- TAO/ChangeLog | 5 +++++ TAO/tao/Invocation_Base.cpp | 13 +++++++++---- TAO/tao/Invocation_Base.h | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 78397c730d1..1ff4008aa08 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,8 @@ +Fri Sep 30 10:41:12 UTC 2005 Johnny Willemsen + + * TAO_IDL/fe/fe_init.cpp: + WChar fix + Fri Sep 30 09:10:00 2005 Simon Massey * tao/PI_Server/ServerInterceptorAdapter.cpp: diff --git a/TAO/tao/Invocation_Base.cpp b/TAO/tao/Invocation_Base.cpp index 7c0728b3c49..61f210e8d08 100644 --- a/TAO/tao/Invocation_Base.cpp +++ b/TAO/tao/Invocation_Base.cpp @@ -204,7 +204,7 @@ namespace TAO Invocation_Base::handle_any_exception (CORBA::Exception *ex ACE_ENV_ARG_DECL) { - caught_exception_ = ex; + this->exception (ex); PortableInterceptor::ReplyStatus status = PortableInterceptor::SYSTEM_EXCEPTION; @@ -225,14 +225,14 @@ namespace TAO PortableInterceptor::ReplyStatus Invocation_Base::handle_all_exception (ACE_ENV_SINGLE_ARG_DECL) { + CORBA::UNKNOWN ex; + this->exception (&ex); + PortableInterceptor::ReplyStatus status = PortableInterceptor::SYSTEM_EXCEPTION; if (adapter_ != 0) { - CORBA::UNKNOWN ex; - this->caught_exception_ = &ex; - this->adapter_->receive_exception (*this ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (PortableInterceptor::UNKNOWN); @@ -247,6 +247,11 @@ namespace TAO void Invocation_Base::exception (CORBA::Exception *exception) { + if (CORBA::SystemException::_downcast (exception) != 0) + this->invoke_status_ = TAO::TAO_INVOKE_SYSTEM_EXCEPTION; + else if (CORBA::UserException::_downcast (exception) != 0) + this->invoke_status_ = TAO::TAO_INVOKE_USER_EXCEPTION; + this->caught_exception_ = exception; } diff --git a/TAO/tao/Invocation_Base.h b/TAO/tao/Invocation_Base.h index 04488139d42..718248de023 100644 --- a/TAO/tao/Invocation_Base.h +++ b/TAO/tao/Invocation_Base.h @@ -226,6 +226,7 @@ namespace TAO TAO::Invocation_Status invoke_status_; + private: /// Pointer to the caught exception. CORBA::Exception *caught_exception_; #endif /*TAO_HAS_INTERCEPTORS*/ -- cgit v1.2.1