[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: kdelibs/kdecore/kconfig_compiler
From:       Maks Orlovich <mo002j () mail ! rochester ! edu>
Date:       2004-06-26 2:42:08
Message-ID: 200406252242.10775.mo002j () mail ! rochester ! edu
[Download RAW message or body]

On Friday 25 June 2004 09:41 pm, Scott Wheeler wrote:
> On Friday 25 June 2004 19:43, Reinhold Kainhofer wrote:
> > Hmm, okay. How can you ensure then that the enum always has enough bits,
> > so that in the future you can add values to the enum without breaking
> > binary compatibility?
>
> I can't say that I understand where this will be an issue.  These types are
> local to the autogenerated files that shouldn't be installed.  And besides
> that the KConfig compiler is mostly used for applications rather than
> libraries.
>
> I may just be missing something here -- but I don't really understand the
> problem that you're getting at.  If I did I would probably suggest using
> the ## operator to concatenate some symbols in a macro to make sure that
> it's specific to that enum.  :-)

What I think he was referring to is this --- if you have 
enum Foo
{
	F1,
	F2,
	F3
};

The type Foo has the logical size of 2 bits in C++, even though it may take a 
lot more in memory. This means that if you try to assign 7 to it, it'll do 
something unexpected, like truncate it or such. So adding values outside the 
current range can sometimes cause problems[1]. A solution is to put in 
something like MaxVal = 0xFFFF to the enum to reserve plenty of bits. 
-However- I fail to see how the original code addressed that.

[1] I think gcc-3.3 was the first g++ version where it happened, but it occurs 
with non-GNU compilers, too; the problem affected KHTML
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic