[omniORB] omniORBpy 3.0: Inconsistent return
from CORBA.TypeCode.kind()
Michael
omniorb at bindone.de
Thu Sep 20 20:10:45 BST 2007
Hi Arne,
this is a bug we reported earlier and that should be fixed in CVS.
Bug report from April:
Hello,
I've run into a strange problem with code that ran fine on omniORBpy 2.6
but started misbehaving on omniORBpy 3.0. Basically I do a type
comparison (operand is an Any):
if operand.typecode().kind() != CORBA.tk_objref:
raise CORBA.BAD_PARAM()
Now, this breaks in omniORBpy 3.0 because kind() returns 14 instead of
the TCKind enum value. I've traced this down to tcInternal.py, and it
seems that in the TypeCode_objref (line 556 in the 3.0 version):
self._k = desc[0]
In this case desc[0] is the integer value of the enumeration.
Origionally, the version 2.6 code had:
self._k = CORBA.tk_objref
Now, it seems like this should be changed for the version 3.0 code to:
self._k = CORBA.TCKind._item(desc[0])
Since in the 3.0 version the TypeCode_objref is used to construct type
codes for several different values of TCKind.
Can anyone confirm that this change is safe?
Thanks,
-Andrew
And Duncans response:
Yes, your fix is the right thing to do. I've checked it in to CVS.
Cheers,
Duncan.
Arne Grimstrup wrote:
> Hi everyone,
>
> I've been porting some code from omniORBpy 2.7 to omniORBpy 3.0 and have
> run
> into an odd behaviour of the CORBA.TypeCode.kind method. When I call
> kind()
> as follows:
>
>>>> f = CORBA.TC_boolean
>>>> f.kind()
> CORBA.tk_boolean
>
> Yet, when I do a similar thing with an interface I've defined I see:
>
>>>> g = CORBA.TypeCode("IDL:alma/ACS/ROdouble:1.0")
>>>> g.kind()
> 14
>
> which is the value of CORBA.tk_objref.
>
> omniORBpy 2.7 returns CORBA.tk_objref, so I'm confused why the two
> versions are different.
>
> Regards,
>
> Arne
>
> _______________________________________________
> omniORB-list mailing list
> omniORB-list at omniorb-support.com
> http://www.omniorb-support.com/mailman/listinfo/omniorb-list
More information about the omniORB-list
mailing list