diff --git a/core/thread/src/TReentrantRWLock.cxx b/core/thread/src/TReentrantRWLock.cxx
index f150fccffc5250aad89cdf0bf207b5ee4d2bdb0e..361f46894790b61970c134f95fcdfee8e835115a 100644
--- a/core/thread/src/TReentrantRWLock.cxx
+++ b/core/thread/src/TReentrantRWLock.cxx
@@ -320,7 +320,7 @@ TReentrantRWLock<MutexT, RecurseCountsT>::Rewind(const State &earlierState) {
    }
    // else earlierState and *this are identical!
 
-   return pStateDelta;
+   return std::unique_ptr<TVirtualRWMutex::StateDelta>(std::move(pStateDelta));
 }
 
 //////////////////////////////////////////////////////////////////////////