/// <summary> /// Ensures that there is sufficient memory allocated. /// </summary> /// <param name="capacity"> /// The required capacity of the block, in bytes. /// </param> /// <exception cref="OutOfMemoryException"> /// There is insufficient memory to satisfy the request. /// </exception> public void EnsureCapacity(int capacity) { int currentSize = _memoryBlock.IsInvalid ? 0 : _memoryBlock.Size; if (capacity > currentSize) { if (0 != currentSize) { currentSize <<= 1; } if (capacity > currentSize) { currentSize = capacity; } if (!_memoryBlock.IsInvalid) { _memoryBlock.Dispose(); } _memoryBlock = SafeHGlobalHandle.Allocate(currentSize); } }