diff options
author | vzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2008-03-28 09:19:19 +0000 |
---|---|---|
committer | vzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2008-03-28 09:19:19 +0000 |
commit | 7f2a90db8524841c5c2f7a0282f1b1e992c082c1 (patch) | |
tree | 58d5d136e2a8179ff8c080c7cce0585f9c6619c0 /TAO/tao/Invocation_Adapter.cpp | |
parent | cd38a3c363d7b3acb34f464434cdd79ace72df0c (diff) | |
download | ATCD-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.cpp | 21 |
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 ( |