summaryrefslogtreecommitdiff
path: root/TAO/tao/Valuetype
diff options
context:
space:
mode:
authormcorino <mcorino@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-11-20 15:37:01 +0000
committermcorino <mcorino@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-11-20 15:37:01 +0000
commite47c37ef7a82ef99e7cceadaecd1c6ca4c64bc7a (patch)
tree4de86c67e0e7c0304d12379d344a5de0213d6ef3 /TAO/tao/Valuetype
parent58eb4a57d527f58bd272b7599344b4fb8e14f86b (diff)
downloadATCD-e47c37ef7a82ef99e7cceadaecd1c6ca4c64bc7a.tar.gz
Sat Nov 20 15:34:50 UTC 2010 Martin Corino <corino_m@remedy.nl>
* tao/Valuetype/AbstractBase.cpp: Fixed missing support for extraction of null object ref for abstract interface.
Diffstat (limited to 'TAO/tao/Valuetype')
-rw-r--r--TAO/tao/Valuetype/AbstractBase.cpp45
1 files changed, 25 insertions, 20 deletions
diff --git a/TAO/tao/Valuetype/AbstractBase.cpp b/TAO/tao/Valuetype/AbstractBase.cpp
index 147eb54a1f3..12e6b91aa3d 100644
--- a/TAO/tao/Valuetype/AbstractBase.cpp
+++ b/TAO/tao/Valuetype/AbstractBase.cpp
@@ -338,28 +338,33 @@ operator>> (TAO_InputCDR &strm, CORBA::AbstractBase_ptr &abs)
if (strm >> generic_objref.inout ())
{
- TAO_Stub *concrete_stubobj = generic_objref->_stubobj ();
-
- CORBA::Boolean const stores_orb =
- ! CORBA::is_nil (concrete_stubobj->servant_orb_var ().in ());
-
- if (stores_orb)
+ // nil object reference or not
+ if (!CORBA::is_nil (generic_objref.in ()))
{
- orb_core =
- concrete_stubobj->servant_orb_var ()->orb_core ();
+ // not nil
+ TAO_Stub *concrete_stubobj = generic_objref->_stubobj ();
+
+ CORBA::Boolean const stores_orb =
+ ! CORBA::is_nil (concrete_stubobj->servant_orb_var ().in ());
+
+ if (stores_orb)
+ {
+ orb_core =
+ concrete_stubobj->servant_orb_var ()->orb_core ();
+ }
+
+ CORBA::Boolean const collocated =
+ orb_core != 0
+ && orb_core->optimize_collocation_objects ()
+ && generic_objref->_is_collocated ();
+
+ ACE_NEW_RETURN (abs,
+ CORBA::AbstractBase (
+ concrete_stubobj,
+ collocated,
+ generic_objref->_servant ()),
+ false);
}
-
- CORBA::Boolean const collocated =
- orb_core != 0
- && orb_core->optimize_collocation_objects ()
- && generic_objref->_is_collocated ();
-
- ACE_NEW_RETURN (abs,
- CORBA::AbstractBase (
- concrete_stubobj,
- collocated,
- generic_objref->_servant ()),
- false);
return true;
}
}