Gellule Xg
2008-12-11 00:56:24 UTC
The following small idl files reveals two bugs in omniidl 4.1.3 cxx
Thanks for the bug report. I've fixed both. For the double constant bug
your proposed fix works. For the struct scope issue, the problem is
actually that the type lookup was failing to enter the struct scope so
it didn't notice the clash. Properly entering the scope means the type
is properly fully qualified in case of clashes.
Isn't the cxx backend having the type of problems with the followingyour proposed fix works. For the struct scope issue, the problem is
actually that the type lookup was failing to enter the struct scope so
it didn't notice the clash. Properly entering the scope means the type
is properly fully qualified in case of clashes.
IDL, where myM::myS and myM::myI::myS clash?
module myM {
struct myS {
boolean myB;
};
interface myI {
void myS();
void myC(in myM::myS myP};
};
};
I notice issues in the hh file:
void myC(const myS& myP);
==> void myC(const *myM::*myS& myP);
virtual void myC(const myS& myP) = 0;
==> virtual void myC(const *myM::*myS& myP) = 0;
and in the SK.cpp file:
void myM::_objref_myI::myC(const myS& myP)
==> void myM::_objref_myI::myC(const *myM::*myS& myP)
_call_desc.arg_0 = &(myS&) myP;
==> _call_desc.arg_0 = &(*myM::*myS&) myP;
Thanks,