56 lines
925 B
C++
56 lines
925 B
C++
// Copyright (C) 2007 Id Software, Inc.
|
|
//
|
|
|
|
#include "../precompiled.h"
|
|
#pragma hdrstop
|
|
|
|
/*
|
|
============
|
|
idSimpleStr::ReAllocate
|
|
============
|
|
*/
|
|
void idSimpleStr::ReAllocate( int amount, bool keepold ) {
|
|
char *newbuffer;
|
|
int newsize;
|
|
int mod;
|
|
|
|
//assert( data );
|
|
assert( amount > 0 );
|
|
|
|
mod = amount % STR_ALLOC_GRAN;
|
|
if ( !mod ) {
|
|
newsize = amount;
|
|
} else {
|
|
newsize = amount + STR_ALLOC_GRAN - mod;
|
|
}
|
|
alloced = newsize;
|
|
|
|
newbuffer = new char[ alloced ];
|
|
if ( keepold && data ) {
|
|
if ( len ) {
|
|
strncpy( newbuffer, data, len );
|
|
newbuffer[ len ] = '\0';
|
|
} else {
|
|
newbuffer[0] = '\0';
|
|
}
|
|
}
|
|
|
|
if ( data && data != baseBuffer ) {
|
|
delete [] data;
|
|
}
|
|
|
|
data = newbuffer;
|
|
}
|
|
|
|
/*
|
|
============
|
|
idSimpleStr::FreeData
|
|
============
|
|
*/
|
|
void idSimpleStr::FreeData( void ) {
|
|
if ( data && data != baseBuffer ) {
|
|
delete[] data;
|
|
data = baseBuffer;
|
|
}
|
|
}
|