[omniORB] Bug: Wrong prototype for out objrefs in implementation skeletons

Duncan Grisby duncan at grisby.org
Mon Jul 25 19:02:29 BST 2005


On Monday 25 July, Andrew Miller wrote:

> I have found a bug in omniORB4:
> 
> For following operation
>     Test2 performSomeOperation(in Test foo1, inout Test2 foo2, out Test2 foo3,
> in string str) raises(x);
> 
> the "out Test2" argument should, in the servant skeleton class, be of type
> equivalent to Foo::Test2_ptr&. However, instead it is of type
> _CORBA_ObjRef_OUT_arg<Foo::_objref_Test2, Foo::Test2_Helper>
> 
> See the table on page 1-107 of the CORBA C++ mapping version 1.1.

My reading of the spec is that omniORB is correct. Section 1.22.1,
preceding the table you mention says:

  ...it is expected that operation signatures for both clients and
  servers will be written in terms of the parameter passing modes shown
  in "Basic Argument and Result Passing", _with the exception that the
  T_out types will be used as the actual parameter types for all out
  parameters_.

The bit I've marked with underscores is in italics in the spec.

Test2_out is a typedef to the template you show, so I think omniORB is
correct.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --



More information about the omniORB-list mailing list