Fix a compatibility issue with the "reserved" parameter.
This commit is contained in:
		| @@ -41,25 +41,14 @@ static cell AMX_NATIVE_CALL ArrayCreate(AMX* amx, cell* params) | ||||
| 	{ | ||||
| 		if (VectorHolder[i]==NULL) | ||||
| 		{ | ||||
| 			VectorHolder[i] = new CellArray(cellsize); | ||||
| 			 | ||||
| 			if (reserved > 0) | ||||
| 			{ | ||||
| 				VectorHolder[i]->resize(reserved); | ||||
| 			} | ||||
|  | ||||
| 			VectorHolder[i] = new CellArray(cellsize, reserved); | ||||
| 			return i + 1; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// None are NULL, create a new vector | ||||
| 	CellArray* NewVector = new CellArray(cellsize); | ||||
| 	CellArray* NewVector = new CellArray(cellsize, reserved); | ||||
| 	 | ||||
| 	if (reserved > 0) | ||||
| 	{ | ||||
| 		NewVector->resize(reserved); | ||||
| 	} | ||||
|  | ||||
| 	VectorHolder.append(NewVector); | ||||
|  | ||||
| 	return VectorHolder.length(); | ||||
|   | ||||
| @@ -15,7 +15,7 @@ | ||||
| class CellArray | ||||
| { | ||||
| public: | ||||
| 	CellArray(size_t blocksize) : m_Data(NULL), m_BlockSize(blocksize), m_AllocSize(0), m_Size(0) | ||||
| 	CellArray(size_t blocksize, size_t basesize = 0) : m_Data(NULL), m_BlockSize(blocksize), m_AllocSize(0), m_BaseSize(basesize > 0 ? basesize : 8), m_Size(0) | ||||
| 	{ | ||||
| 	} | ||||
|  | ||||
| @@ -160,7 +160,7 @@ private: | ||||
| 		/* Set a base allocation size of 8 items */ | ||||
| 		if (!m_AllocSize) | ||||
| 		{ | ||||
| 			m_AllocSize = 8; | ||||
| 			m_AllocSize = m_BaseSize; | ||||
| 		} | ||||
| 		/* If it's not enough, keep doubling */ | ||||
| 		while (m_Size + count > m_AllocSize) | ||||
| @@ -181,6 +181,7 @@ private: | ||||
| 	cell  *m_Data; | ||||
| 	size_t m_BlockSize; | ||||
| 	size_t m_AllocSize; | ||||
| 	size_t m_BaseSize; | ||||
| 	size_t m_Size; | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user