From: <bi...@us...> - 2008-01-10 14:34:52
|
Revision: 2137 http://oorexx.svn.sourceforge.net/oorexx/?rev=2137&view=rev Author: bigrixx Date: 2008-01-10 06:34:55 -0800 (Thu, 10 Jan 2008) Log Message: ----------- Merge in trunk changes Modified Paths: -------------- sandbox/rick/exit/kernel/classes/MutableBufferClass.cpp Modified: sandbox/rick/exit/kernel/classes/MutableBufferClass.cpp =================================================================== --- sandbox/rick/exit/kernel/classes/MutableBufferClass.cpp 2008-01-10 06:22:44 UTC (rev 2136) +++ sandbox/rick/exit/kernel/classes/MutableBufferClass.cpp 2008-01-10 14:34:55 UTC (rev 2137) @@ -284,16 +284,19 @@ char padChar = get_pad(pad, ' ', ARG_FOUR); - // if inserting a zero length string, this is simple! - if (insertLength == 0) - { - return this; /* do nothing */ - } + size_t copyLength = Numerics::minVal(insertLength, string->getLength()); + size_t padLength = insertLength - copyLength; + // if inserting within the current bounds, we only need to add the length // if inserting beyond the end, we need to make sure we add space for the gap too if (begin < dataLength) { + // if inserting a zero length string, this is simple! + if (insertLength == 0) + { + return this; /* do nothing */ + } ensureCapacity(insertLength); } else @@ -313,11 +316,11 @@ data->setData(dataLength, padChar, begin - dataLength); } /* insert string contents */ - data->copyData(begin, string->getStringData(), string->getLength()); + data->copyData(begin, string->getStringData(), copyLength); // do we need data padding? - if (insertLength > string->getLength()) + if (padLength > 0) { - data->setData(begin + string->getLength(), padChar, insertLength - string->getLength()); + data->setData(begin + string->getLength(), padChar, padLength); } // inserting after the end? the resulting length is measured from the insertion point if (begin > this->dataLength) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |