[omniORB] Possible bug in _ptrToInterface method
Alex Shabarshoff
shura@uc.ru
Thu, 22 Feb 2001 11:50:32 +0300
Hello omniORBers,
I have the two IDL files:
---------------- a.idl ------------
module M { interface A { void funcA(); }; };
---------------- b.idl ------------
#include "a.idl"
module M { interface B : A { void funcB(); }; };
After the applying omniidl compiler with command line "omniidl -bcxx
b.idl", i got the bSK.cc skeleton file with _ptrToInterface method
like this:
void*
M::_impl_B::_ptrToInterface(const char* id)
{
if( !strcmp(id, CORBA::Object::_PD_repoId) )
return (void*) 1;
if( !strcmp(id, M::B::_PD_repoId) )
return (_impl_B*) this;
> if( !strcmp(id, A::_PD_repoId) )
return (_impl_A*) this;
return 0;
}
In the selected line you can see reference to A::_PD_repoId without
the module name "M". Is this correct? The program linked correctly,
but sometimes dies at this line of code because the A::_PD_repoId
points to the far galaxy :) This behavior of omniidl tested in 3.0.0
and 3.0.2 versions of omniORB.
BTW, in method "CORBA::Boolean M::_pof_B::is_a(const char* id) const"
the module name is exist for A::_PD_repoId.
Best regards,
Alex Shabarshoff (mailto:shura@uc.ru)
Union Card Processing Company
Chief of Security Systems Development Department
Europay Security Supervisor