[omniORB] omniidl bug?

Borges, Mark mark.borges@attws.com
Wed, 8 Dec 1999 11:21:45 -0800


Duncan,

I applied the enormous patch, but sadly it had no effect.

Is there any other diagnostic information I can provide to help find a
solution? Is there a mini test program I can compile and run here that would
help (sorry, I'm new to C++ so I can't help much -- the omniORB python
binding is what lured me here in the first place :-).

Mark

> -----Original Message-----
> From: Duncan Grisby [mailto:dgrisby@uk.research.att.com]
> Sent: Wednesday, December 08, 1999 2:00 AM
> To: Borges, Mark
> Cc: 'omniorb-list@uk.research.att.com'
> Subject: Re: [omniORB] omniidl bug? 
> 
> 
> On Tuesday 7 December, "Borges, Mark" wrote:
> 
> > $ /opt/omniORB/scripts/omniidl -I. -bpython cdt.idl           
> > cdt.idl:6: Integer literal is too large for unsigned long
> > omniidl: 1 error.
> > --------------------
> > 
> > Why? Neither omniidl2 nor python-stubber from the 
> XEROX-PARC ILU-2.0beta1
> > distribution complain.
> 
> [...]
> 
> >   if (value_ > 0xffffffff) {
> 
> [...]
> 
> > $ gcc -dumpversion    
> > 2.95.2
> > $ gcc -dumpmachine    
> > sparc-sun-solaris2.6
> 
> I assume the problem is that on Sparc, the 0xffffffff is being
> sign-extended to be -1. It's not obvious from the C++ spec what the
> behaviour should be. Can you try the following enormous patch to see
> if the problem goes away?
> 
> 
> --- idlexpr.cc	1999/11/02 17:07:26	1.3
> +++ idlexpr.cc	1999/12/08 09:55:13
> @@ -144,7 +144,7 @@
>  }
>  _CORBA_ULong IntegerExpr::evalAsULong() {
>  #ifdef HAS_LongLong
> -  if (value_ > 0xffffffff) {
> +  if (value_ > 0xffffffffU) {
>      IdlError(file(), line(), "Integer literal is too large 
> for unsigned long");
>      return 1;
>    }
> 
> 
> Cheers,
> 
> Duncan.
> 
> -- 
>  -- Duncan Grisby  \  Research Engineer  --
>   -- AT&T Laboratories Cambridge          --
>    -- http://www.uk.research.att.com/~dpg1 --
>