Unexplained behavior on bool variable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux