m_RefreshPending is a 32 bit BOOL and the constructor will initialize it 
completely with 0.
If it was initializing only the 1st byte, the new code would still be wrong, 
since it makes no difference.
InterlockedCompareExchange will exchange 32 bit, no matter whether you pass a 
bool or a BOOL.


Am 03.11.2015 um 10:00 schrieb Thomas Faber:
It makes a difference because m_RefreshPending was initialized to 0 by
the constructor, but the three bytes behind it were not, so the first
cmpxchg could fail.
Plus of course if someone decided to add another bool or a char array
or whatever at the end, that would get overwritten.


On 2015-11-03 00:21, Timo Kreuzer wrote:
In fact in this case it wouldn't make a difference, since the bool would
be converted to a LONG. But using TRUE/FALSE seems to be appropriate here.

Am 22.10.2015 um 19:37 schrieb gedmur...@svn.reactos.org:
Author: gedmurphy
Date: Thu Oct 22 17:37:51 2015
New Revision: 69650

URL: http://svn.reactos.org/svn/reactos?rev=69650&view=rev
Log:
The c++ bool is 1 byte, not 4. Thanks Thomas

Modified:
      trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
      trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp?rev=69650&r1=69649&r2=69650&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp       [iso-8859-1] 
(original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp       [iso-8859-1] 
Thu Oct 22 17:37:51 2015
@@ -786,7 +786,7 @@
                   // we set a timer to run in 500ms, which should leave enough 
time for all
                   // the messages to come through. Wrap so we don't set 
multiple timers
                   //
-                if (InterlockedCompareExchange((LONG 
*)&This->m_RefreshPending, true, false) == false)
+                if (InterlockedCompareExchange((LONG 
*)&This->m_RefreshPending, TRUE, FALSE) == FALSE)
                   {
                       SetTimer(hwnd, REFRESH_TIMER, 500, NULL);
                   }
@@ -807,7 +807,7 @@
                   KillTimer(hwnd, REFRESH_TIMER);
// Allow more change notifications
-                InterlockedExchange((LONG *)&This->m_RefreshPending, false);
+                InterlockedExchange((LONG *)&This->m_RefreshPending, FALSE);
               }
               break;
           }

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h?rev=69650&r1=69649&r2=69650&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h [iso-8859-1] Thu Oct 22 
17:37:51 2015
@@ -17,7 +17,7 @@
       HMENU m_hMenu;
       HMENU m_hActionMenu;
       int m_CmdShow;
-    bool m_RefreshPending;
+    BOOL m_RefreshPending;
public:
       CDeviceManager(void);



_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev



Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to