[ATL] Do not corrupt the internal state of the CSimpleArray when allocation fails...
[reactos.git] / reactos / sdk / lib / atl / atlsimpcoll.h
index 9564e53..3bf39c8 100644 (file)
@@ -182,16 +182,17 @@ public:
         {
             RemoveAll();
 
-            m_nCapacity = src.GetSize();
+            int nNewCount = src.GetSize();
 
-            T *pNewData = (T *)realloc(m_pData, m_nCapacity * sizeof(T));
+            T *pNewData = (T *)realloc(m_pData, nNewCount * sizeof(T));
             ATLASSERT(pNewData);
             if (pNewData == NULL)
                 return *this;   // failure
 
-            // store new data and capacity
+            // store new
             m_pData = pNewData;
-            m_nCount = m_nCapacity;
+            m_nCount = nNewCount;
+            m_nCapacity = nNewCount;
         }
         else
         {