Fix for Issue 95:rcIntArray still using new/delete
This commit is contained in:
parent
377315641e
commit
5070ca9fc4
@ -40,10 +40,12 @@ class rcIntArray
|
||||
{
|
||||
int* m_data;
|
||||
int m_size, m_cap;
|
||||
inline rcIntArray(const rcIntArray&);
|
||||
inline rcIntArray& operator=(const rcIntArray&);
|
||||
public:
|
||||
inline rcIntArray() : m_data(0), m_size(0), m_cap(0) {}
|
||||
inline rcIntArray(int n) : m_data(0), m_size(0), m_cap(n) { m_data = new int[n]; }
|
||||
inline ~rcIntArray() { delete [] m_data; }
|
||||
inline rcIntArray(int n) : m_data(0), m_size(0), m_cap(0) { resize(n); }
|
||||
inline ~rcIntArray() { rcFree(m_data); }
|
||||
void resize(int n);
|
||||
inline void push(int item) { resize(m_size+1); m_data[m_size-1] = item; }
|
||||
inline int pop() { if (m_size > 0) m_size--; return m_data[m_size]; }
|
||||
@ -56,7 +58,7 @@ public:
|
||||
template<class T> class rcScopedDelete
|
||||
{
|
||||
T* ptr;
|
||||
inline T* operator=(T* p) { /*ptr = p; return ptr;*/ }
|
||||
inline T* operator=(T* p);
|
||||
public:
|
||||
inline rcScopedDelete() : ptr(0) {}
|
||||
inline rcScopedDelete(T* p) : ptr(p) {}
|
||||
|
@ -55,7 +55,7 @@ void rcIntArray::resize(int n)
|
||||
{
|
||||
if (n > m_cap)
|
||||
{
|
||||
if (!m_cap) m_cap = 8;
|
||||
if (!m_cap) m_cap = n;
|
||||
while (m_cap < n) m_cap *= 2;
|
||||
int* newData = (int*)rcAlloc(m_cap*sizeof(int), RC_ALLOC_TEMP);
|
||||
if (m_size && newData) memcpy(newData, m_data, m_size*sizeof(int));
|
||||
|
Loading…
x
Reference in New Issue
Block a user