summaryrefslogtreecommitdiff
path: root/TAO/tao/Invocation_Adapter.cpp
diff options
context:
space:
mode:
authorvzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2008-03-28 09:19:19 +0000
committervzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2008-03-28 09:19:19 +0000
commit7f2a90db8524841c5c2f7a0282f1b1e992c082c1 (patch)
tree58d5d136e2a8179ff8c080c7cce0585f9c6619c0 /TAO/tao/Invocation_Adapter.cpp
parentcd38a3c363d7b3acb34f464434cdd79ace72df0c (diff)
downloadATCD-7f2a90db8524841c5c2f7a0282f1b1e992c082c1.tar.gz
ChangeLogTag: Fri Mar 28 09:07:14 UTC 2008 Vladimir Zykov <vladimir.zykov@prismtech.com>
Diffstat (limited to 'TAO/tao/Invocation_Adapter.cpp')
-rw-r--r--TAO/tao/Invocation_Adapter.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/TAO/tao/Invocation_Adapter.cpp b/TAO/tao/Invocation_Adapter.cpp
index 0674e6e090d..8ebdc4f6ba4 100644
--- a/TAO/tao/Invocation_Adapter.cpp
+++ b/TAO/tao/Invocation_Adapter.cpp
@@ -356,7 +356,26 @@ namespace TAO
{
// The object pointer has to be changed to a TAO_Stub pointer
// in order to obtain the profiles.
- TAO_Stub *stubobj = effective_target->_stubobj ();
+ TAO_Stub *stubobj = 0;
+
+ bool nil_forward_ref = false;
+ if (CORBA::is_nil (effective_target))
+ nil_forward_ref = true;
+ else
+ {
+ stubobj =
+ effective_target->_stubobj ();
+
+ if (stubobj && stubobj->base_profiles ().size () == 0)
+ nil_forward_ref = true;
+ }
+
+ if (nil_forward_ref)
+ throw ::CORBA::TRANSIENT (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_INVOCATION_LOCATION_FORWARD_MINOR_CODE,
+ errno),
+ CORBA::COMPLETED_NO);
if (stubobj == 0)
throw ::CORBA::INTERNAL (