This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Unexplained behavior on bool variable


Hi, my name is Guilherme Müller, and today something very weird happened to me. I couldn't realize why this is happening, so, I decided to show you to check if this is a compiler weird behavior or something. This never happened to me later, and I guess it would be very hard to reproduce, so I don't know if it will be helpful sending an email to this group. Anyway,

Here is the code: (I don't need to pass the size into this method cause is a defined fixed size AND it's tested before calling it, so don't call me "bad coder" =D)

User * User::FromNetworkSerializedData(const unsigned char * data)
     {

User * user = new User();
int readptr = 1;
.
.
.


unsigned char AccessFlags = 0;
bool logic = ((data[readptr] & 28) > 0); // this line as is return always false or something else, even if the comparison is true
// Anyway, if I do this now:
// cout << logic << endl;


         // or even THIS:
         // logic = logic;

         // the comparison works and everything goes fine!
         // weird, isn't it?

       if (logic)
         {
           AccessFlags = (data[readptr] & 28);
           user->AndLogic = false;
         }
       else
         {
           AccessFlags = ((data[readptr] >> 3) & 28);
           user->AndLogic = true;
         }

.
.
.
return user;
}


This is not a call for help, just check if this could be a memory corruption or something. As I said, it could be very hard to reproduce... Good Luck.

Guilherme Müller





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]