diff options
Diffstat (limited to 'src/flexbuf.cpp')
-rw-r--r-- | src/flexbuf.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/flexbuf.cpp b/src/flexbuf.cpp index acd55a7..6d55294 100644 --- a/src/flexbuf.cpp +++ b/src/flexbuf.cpp | |||
@@ -204,3 +204,26 @@ int FlexBuf::findChar( char cTarget ) | |||
204 | return -1; | 204 | return -1; |
205 | } | 205 | } |
206 | 206 | ||
207 | void FlexBuf::ensureCapacity( int nAmount ) | ||
208 | { | ||
209 | if( nLastChar + nAmount + 1 > nSize ) | ||
210 | { | ||
211 | if( nFill + nAmount + 1 < nSize ) | ||
212 | { | ||
213 | memcpy( lpBuf, lpBuf+nFirstChar, nFill ); | ||
214 | nLastChar -= nFirstChar; | ||
215 | nFirstChar = 0; | ||
216 | } | ||
217 | else | ||
218 | { | ||
219 | nSize += nAmount+1; | ||
220 | char *lpNewBuf = new char[nSize]; | ||
221 | memcpy( lpNewBuf, lpBuf+nFirstChar, nFill ); | ||
222 | delete[] lpBuf; | ||
223 | lpBuf = lpNewBuf; | ||
224 | nLastChar -= nFirstChar; | ||
225 | nFirstChar = 0; | ||
226 | } | ||
227 | } | ||
228 | } | ||
229 | |||