Fix for Issue 95:rcIntArray still using new/delete

This commit is contained in:
Mikko Mononen 2010-07-10 08:51:35 +00:00
parent 377315641e
commit 5070ca9fc4
2 changed files with 6 additions and 4 deletions

View File

@ -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) {}

View File

@ -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));