INT32 _msgBuffer::realloc( CHAR *&ptr, const UINT32 size ) { INT32 rc = SDB_OK ; if ( 0 == size ) { rc = SDB_INVALIDARG ; goto error ; } if ( size <= _capacity ) { goto done ; } ptr = ( CHAR * )SDB_OSS_REALLOC( ptr, size ) ; if ( NULL == ptr ) { rc = SDB_OOM ; goto error ; } _capacity = size ; ossMemset( _data + _size, 0, _capacity - _size ) ; done: return rc ; error: goto done ; }
// PD_TRACE_DECLARE_FUNCTION ( SDB__DMSSTORAGELOADEXT__ALLOCEXTENT, "dmsStorageLoadOp::_allocateExtent" ) INT32 dmsStorageLoadOp::_allocateExtent ( INT32 requestSize ) { INT32 rc = SDB_OK ; PD_TRACE_ENTRY ( SDB__DMSSTORAGELOADEXT__ALLOCEXTENT ); if ( requestSize < DMS_MIN_EXTENT_SZ(_pageSize) ) { requestSize = DMS_MIN_EXTENT_SZ(_pageSize) ; } else if ( requestSize > DMS_MAX_EXTENT_SZ ) { requestSize = DMS_MAX_EXTENT_SZ ; } else { requestSize = ossRoundUpToMultipleX ( requestSize, _pageSize ) ; } if ( !_pCurrentExtent ) { _pCurrentExtent = (CHAR*)SDB_OSS_MALLOC ( requestSize ) ; if ( !_pCurrentExtent ) { PD_LOG ( PDERROR, "Unable to allocate %d bytes memory", requestSize ) ; rc = SDB_OOM ; goto error ; } _currentExtentSize = requestSize ; _initExtentHeader ( (dmsExtent*)_pCurrentExtent, _currentExtentSize/_pageSize ) ; } else { if ( requestSize > _currentExtentSize ) { CHAR *pOldPtr = _pCurrentExtent ; _pCurrentExtent = (CHAR*)SDB_OSS_REALLOC ( _pCurrentExtent, requestSize ) ; if ( !_pCurrentExtent ) { PD_LOG ( PDERROR, "Unable to realloc %d bytes memory", requestSize ) ; _pCurrentExtent = pOldPtr ; rc = SDB_OOM ; goto error ; } _currentExtentSize = requestSize ; } _initExtentHeader ( (dmsExtent*)_pCurrentExtent, _currentExtentSize/_pageSize ) ; } done : PD_TRACE_EXITRC ( SDB__DMSSTORAGELOADEXT__ALLOCEXTENT, rc ); return rc ; error : goto done ; }
INT32 _pmdEDUCB::reallocBuff( INT32 len, CHAR **ppBuff, INT32 &buffLen ) { INT32 rc = SDB_OK ; CHAR *pOld = *ppBuff ; INT32 oldLen = buffLen ; ALLOC_MAP_IT itAlloc = _allocMap.find( *ppBuff ) ; if ( itAlloc != _allocMap.end() ) { buffLen = itAlloc->second ; oldLen = buffLen ; } else if ( *ppBuff != NULL || buffLen != 0 ) { PD_LOG( PDERROR, "EDU[%s] realloc input buffer error", toString().c_str() ) ; rc = SDB_SYS ; goto error ; } if ( buffLen >= len ) { goto done ; } len = ossRoundUpToMultipleX( len, EDU_MEM_ALIGMENT_SIZE ) ; *ppBuff = ( CHAR* )SDB_OSS_REALLOC( *ppBuff, len ) ; if ( !*ppBuff ) { PD_LOG( PDERROR, "Failed to realloc memory, size: %d", len ) ; goto error ; } buffLen = len ; _totalMemSize += ( len - oldLen ) ; _allocMap[ *ppBuff ] = buffLen ; done: return rc ; error: if ( pOld ) { releaseBuff( pOld ) ; *ppBuff = NULL ; buffLen = 0 ; } goto done ; }
INT32 migExport::_reallocBuffer( CHAR **ppBuffer, INT32 size, INT32 newSize ) { INT32 rc = SDB_OK ; CHAR *pTemp = NULL ; if ( newSize > size ) { pTemp = (CHAR *)SDB_OSS_REALLOC( *ppBuffer, newSize ) ; if ( !pTemp ) { rc = SDB_OOM ; PD_LOG ( PDERROR, "out of memory, rc=%d", rc ) ; goto error ; } *ppBuffer = pTemp ; } done: return rc ; error: goto done ; }
INT32 _spdFMP::_extendReadBuf() { INT32 rc = SDB_OK ; CHAR *pOrgBuff = _readBuf ; _readBuf = ( CHAR * )SDB_OSS_REALLOC( _readBuf, _readBufSize + SPD_READ_PAGE ) ; if ( NULL == _readBuf ) { PD_LOG( PDERROR, "failed to realloc %d bytes mem.", _readBufSize + SPD_READ_PAGE ) ; _readBuf = pOrgBuff ; rc = SDB_OOM ; goto error ; } _readBufSize += SPD_READ_PAGE ; done: return rc ; error: goto done ; }
INT32 _checkBuffer ( CHAR **ppBuff, INT64 *pBuffLen, INT64 length ) { INT32 rc = SDB_OK ; if ( length > *pBuffLen ) { CHAR *pOld = *ppBuff ; INT32 newSize = length + 1 ; *ppBuff = (CHAR*)SDB_OSS_REALLOC ( *ppBuff, sizeof(CHAR)*(newSize)) ; if ( !*ppBuff ) { rc = SDB_OOM ; *ppBuff = pOld ; goto error ; } *pBuffLen = newSize ; } done : return rc ; error : goto done ; }
INT32 resize( UINT32 size ) { INT32 rc = SDB_OK ; if ( size <= _bufSize || size <= _eleSize ) { goto done ; } else if ( UTIL_ARRAY_DEFAULT_SIZE == _bufSize ) { _dynamicBuf = ( T * )SDB_OSS_MALLOC( sizeof( T ) * size ) ; if ( NULL == _dynamicBuf ) { rc = SDB_OOM ; goto error ; } _bufSize = size ; ossMemcpy( _dynamicBuf, _staticBuf, sizeof( T ) * UTIL_ARRAY_DEFAULT_SIZE ) ; _eles = _dynamicBuf ; } else { T *tmp = _dynamicBuf ; _dynamicBuf = ( T * )SDB_OSS_REALLOC( _dynamicBuf, sizeof( T ) * size ) ; if ( NULL == _dynamicBuf ) { _dynamicBuf = tmp ; rc = SDB_OOM ; goto error ; } _bufSize = size ; _eles = _dynamicBuf ; } done: return rc ; error: goto done ; }
OSS_INLINE INT32 append( const T &t ) { INT32 rc = SDB_OK ; if ( _eleSize < _bufSize ) { _eles[_eleSize++] = t ; } else if ( UTIL_ARRAY_DEFAULT_SIZE == _bufSize ) { _dynamicBuf = ( T * )SDB_OSS_MALLOC( sizeof( T ) * ( _bufSize * 2 ) ) ; if ( NULL == _dynamicBuf ) { rc = SDB_OOM ; goto error ; } _bufSize *= 2 ; ossMemcpy( _dynamicBuf, _staticBuf, sizeof( T ) * UTIL_ARRAY_DEFAULT_SIZE ) ; _eles = _dynamicBuf ; _eles[_eleSize++] = t ; } else { T *tmp = _dynamicBuf ; _dynamicBuf = ( T * )SDB_OSS_REALLOC( _dynamicBuf, sizeof( T ) * _bufSize * 2 ) ; if ( NULL == _dynamicBuf ) { _dynamicBuf = tmp ; rc = SDB_OOM ; goto error ; } _bufSize *= 2 ; _eles = _dynamicBuf ; _eles[_eleSize++] = t ; } done: return rc ; error: goto done ; }