Author: carnold
Date: Tue Nov 20 20:31:09 2007
New Revision: 596934

URL: http://svn.apache.org/viewvc?rev=596934&view=rev
Log:
LOGCXX-186: Drop mutex guarding of ObjectPtrBase::exchange

Modified:
    logging/log4cxx/trunk/src/main/cpp/objectptr.cpp

Modified: logging/log4cxx/trunk/src/main/cpp/objectptr.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/objectptr.cpp?rev=596934&r1=596933&r2=596934&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/objectptr.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/objectptr.cpp Tue Nov 20 20:31:09 2007
@@ -33,12 +33,12 @@
 }
 
 void* ObjectPtrBase::exchange(void** destination, void* newValue) {
-#if APR_SIZEOF_VOIDP == 4
+#if _WIN32 && (!defined(_MSC_VER) || _MSC_VER >= 1300)
+    return InterlockedExchangePointer(destination, newValue);
+#elif APR_SIZEOF_VOIDP == 4
    return (void*) apr_atomic_xchg32((volatile apr_uint32_t*) destination,
                           (apr_uint32_t) newValue);
 #else
-   static Mutex mutex(APRInitializer::getRootPool());
-   synchronized sync(mutex);
    void* oldValue = *destination;
    *destination = newValue;
    return oldValue;


Reply via email to