[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