summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2005-09-30 10:45:58 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2005-09-30 10:45:58 +0000
commit52f8f4361fbf5f5fbf5ab7d64fd226be1b2bca79 (patch)
treeea68ad9fbe53e3a88524e77e6e74eb1a513dba0e
parent7c457babc4aa54337c3d02e6d76b2dd171d486f5 (diff)
downloadATCD-52f8f4361fbf5f5fbf5ab7d64fd226be1b2bca79.tar.gz
ChangeLogTag: Fri Sep 30 10:41:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
-rw-r--r--TAO/ChangeLog5
-rw-r--r--TAO/tao/Invocation_Base.cpp13
-rw-r--r--TAO/tao/Invocation_Base.h1
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 <jwillemsen@remedy.nl>
+
+ * TAO_IDL/fe/fe_init.cpp:
+ WChar fix
+
Fri Sep 30 09:10:00 2005 Simon Massey <simon.massey@prismtech.com>
* 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*/