[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-commits
Subject:    svn commit: r799641 -
From:       tabish () apache ! org
Date:       2009-07-31 15:46:39
Message-ID: 20090731154639.A6C4C2388981 () eris ! apache ! org
[Download RAW message or body]

Author: tabish
Date: Fri Jul 31 15:46:39 2009
New Revision: 799641

URL: http://svn.apache.org/viewvc?rev=799641&view=rev
Log:
Fixes for issues found while testing on Windows.

Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/Pointer.h

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/Pointer.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/Pointer.h?rev=799641&r1=799640&r2=799641&view=diff
 ==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/Pointer.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/Pointer.h Fri Jul 31 \
15:46:39 2009 @@ -46,6 +46,8 @@
             this->counter->incrementAndGet();
         }
 
+    protected:
+
         /**
          * Swaps this instance's reference counter with the one given, this allows
          * for copy-and-swap semantics of this object.
@@ -171,7 +173,7 @@
         }
 
         virtual ~Pointer() throw() {
-            if( this->release() == true ) {
+            if( REFCOUNTER::release() == true ) {
                 delete this->value;
             }
         }
@@ -189,6 +191,23 @@
         }
 
         /**
+         * Releases the Pointer held and resets the internal pointer value to Null.  \
This method +         * is not guaranteed to be safe if the Pointer is held by more \
than one object or this +         * method is called from more than one thread.
+         *
+         * @param value - The new value to contain.
+         *
+         * @returns The pointer instance that was held by this Pointer object, the \
pointer is +         *          no longer owned by this Pointer and won't be freed \
when this Pointer goes +         *          out of scope.
+         */
+        T* release() {
+            T* temp = this->value;
+            this->value = NULL;
+            return temp;
+        }
+
+        /**
          * Gets the real pointer that is contained within this Pointer.  This is
          * not really safe since the caller could delete or alter the pointer but
          * it mimics the STL auto_ptr and gives access in cases where the caller


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic