etqw-sdk/source/idlib/text/StrSimple.cpp

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;
}
}