[omniORB] omniORB 3.00pre1 problem with _is_a (_real_is_a)

David Riddoch djr@uk.research.att.com
Mon, 8 Nov 1999 09:35:38 +0000 (GMT)


Hi Christof,


Yes, I think you're right.  Just remove those lines.


Cheers,
David



On Sun, 7 Nov 1999, Christof Meerwald wrote:

> I think there is a problem in omniObjRef::_real_is_a:
> 
>   {
>     omni::internalLock->lock();
>     int tv = pd_flags.type_verified;
>     omni::internalLock->unlock();
>     if( tv )  return 0;
>   }
> 
> But the specs say (CORBA 2.3.1: 99-10-07, 13.6.2 Interoperable Object
> References: IORs):
> 
>   The type ID, if provided by the server, indicates the most derived type
>   that the server wishes to publish, at the time the reference is generated.
>   The object's actual most derived type may later change to a more derived
>   type. Therefore, the type ID in the IOR can only be interpreted by the
>   client as a hint that the object supports at least the indicated
>   interface. The client can succeed in narrowing the reference to the
>   indicated interface, or to one of its base interfaces, based solely on the
>   type ID in the IOR, but must not fail to narrow the reference without
>   consulting the object via the "_is_a" or "_get_interface"
>   pseudo-operations.
> 
> 
> As I understand it, _real_is_a shouldn't return 0 without calling
> _remote_is_a.