diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2007-08-03 04:00:00 +0400 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:15:53 +0300 |
commit | 33ccab7e728a996800e166d849fe1e92a17e1afe (patch) | |
tree | e9d1148bae1da8127a3eefbc217aafd736fb74af /CPP/Common | |
parent | d14d4dcdefbef6695a618c3cdac05ba2ede5572e (diff) |
4.52 beta
Diffstat (limited to 'CPP/Common')
-rwxr-xr-x | CPP/Common/MyVector.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/CPP/Common/MyVector.cpp b/CPP/Common/MyVector.cpp index 86e56da0..def2a581 100755 --- a/CPP/Common/MyVector.cpp +++ b/CPP/Common/MyVector.cpp @@ -6,8 +6,7 @@ #include "MyVector.h" -CBaseRecordVector::~CBaseRecordVector() - { Free(); } +CBaseRecordVector::~CBaseRecordVector() { Free(); } void CBaseRecordVector::Free() { @@ -17,16 +16,13 @@ void CBaseRecordVector::Free() _items = 0; } -void CBaseRecordVector::Clear() - { DeleteFrom(0); } -void CBaseRecordVector::DeleteBack() - { Delete(_size - 1); } -void CBaseRecordVector::DeleteFrom(int index) - { Delete(index, _size - index); } +void CBaseRecordVector::Clear() { DeleteFrom(0); } +void CBaseRecordVector::DeleteBack() { Delete(_size - 1); } +void CBaseRecordVector::DeleteFrom(int index) { Delete(index, _size - index); } void CBaseRecordVector::ReserveOnePosition() { - if(_size != _capacity) + if (_size != _capacity) return; int delta; if (_capacity > 64) @@ -40,17 +36,16 @@ void CBaseRecordVector::ReserveOnePosition() void CBaseRecordVector::Reserve(int newCapacity) { - if(newCapacity <= _capacity) + if (newCapacity <= _capacity) return; - /* - #ifndef _DEBUG - static const unsigned int kMaxVectorSize = 0xF0000000; - if(newCapacity < _size || - ((unsigned int )newCapacity * (unsigned int )_itemSize) > kMaxVectorSize) + if ((unsigned)newCapacity >= ((unsigned)1 << (sizeof(unsigned) * 8 - 1))) + throw 1052353; + size_t newSize = (size_t)(unsigned)newCapacity * _itemSize; + if (newSize / _itemSize != (size_t)(unsigned)newCapacity) throw 1052354; - #endif - */ - unsigned char *p = new unsigned char[newCapacity * _itemSize]; + unsigned char *p = new unsigned char[newSize]; + if (p == 0) + throw 1052355; int numRecordsToMove = _capacity; memmove(p, _items, _itemSize * numRecordsToMove); delete [](unsigned char *)_items; |