[ATL] Do not corrupt the internal state of the CSimpleArray when allocation fails...
authorMark Jansen <mark.jansen@reactos.org>
Sat, 17 Sep 2016 17:54:16 +0000 (17:54 +0000)
committerMark Jansen <mark.jansen@reactos.org>
Sat, 17 Sep 2016 17:54:16 +0000 (17:54 +0000)
svn path=/trunk/; revision=72705

reactos/sdk/lib/atl/atlsimpcoll.h

index 9564e53..3bf39c8 100644 (file)
@@ -182,16 +182,17 @@ public:
         {
             RemoveAll();
 
         {
             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
 
             ATLASSERT(pNewData);
             if (pNewData == NULL)
                 return *this;   // failure
 
-            // store new data and capacity
+            // store new
             m_pData = pNewData;
             m_pData = pNewData;
-            m_nCount = m_nCapacity;
+            m_nCount = nNewCount;
+            m_nCapacity = nNewCount;
         }
         else
         {
         }
         else
         {