[PATCH 1.1] Windows Interlock: Function wInterlocked set to return 0


John Gray <jgray@...>
 

Function wInterlocked set to return 0 for windows.  Not an operation (no-op) in Unix.

 

Index: queue.c

===================================================================

RCS file: /cvsroot/products/mama/c_cpp/src/c/queue.c,v

retrieving revision 1.35.4.5.2.1.4.11

diff -w -u -r1.35.4.5.2.1.4.11 queue.c

--- queue.c 27 Sep 2011 12:38:50 -0000  1.35.4.5.2.1.4.11

+++ queue.c 14 Jan 2012 09:41:43 -0000

@@ -198,6 +198,7 @@

     impl->mQueueMonitorClosure  =   NULL;

 

     /* Create the counter lock. */

+    wInterlocked_initialize(&impl->mNumberOpenObjects);

     wInterlocked_set(0, &impl->mNumberOpenObjects);

 

 

@@ -436,7 +437,7 @@

     int newCount = wInterlocked_decrement(&impl->mNumberOpenObjects);

 

     /* Write a log if something has gone wrong. */

-    if(impl->mNumberOpenObjects < 0)

+    if(newCount < 0)

     {

         mama_log(MAMA_LOG_LEVEL_ERROR, "Queue 0x%p has been dereferenced too many times.", queue);

     }

@@ -719,6 +720,9 @@

         impl->mMamaQueueBridgeImpl = NULL;

         impl->mMsg                 = NULL;

 

+        /* Destroy the counter lock */

+        wInterlocked_destroy(&impl->mNumberOpenObjects);

+

         free (impl);

 

         mama_log (MAMA_LOG_LEVEL_FINEST, "Leaving mamaQueue_destroy for queue 0x%X.", queue);

 

Signed-off-by: John Gray <jgray@...>