From: <ust...@us...> - 2007-02-15 11:07:21
|
Revision: 2503 http://svn.sourceforge.net/clucene/?rev=2503&view=rev Author: ustramooner Date: 2007-02-15 03:07:20 -0800 (Thu, 15 Feb 2007) Log Message: ----------- fixed bug submitted by Thomas Busch Modified Paths: -------------- trunk/src/CLucene/index/SegmentTermEnum.cpp trunk/src/CLucene/index/SegmentTermEnum.h Modified: trunk/src/CLucene/index/SegmentTermEnum.cpp =================================================================== --- trunk/src/CLucene/index/SegmentTermEnum.cpp 2007-02-09 18:48:49 UTC (rev 2502) +++ trunk/src/CLucene/index/SegmentTermEnum.cpp 2007-02-15 11:07:20 UTC (rev 2503) @@ -272,7 +272,7 @@ //Have the buffer grown if needed if ( bufferLength <= _term->textLength() ) - growBuffer(_term->textLength() ); // copy term text into buffer + growBuffer(_term->textLength(), true ); // copy term text into buffer else _tcsncpy(buffer,_term->text(),bufferLength); //just copy the buffer } @@ -336,9 +336,8 @@ //chars in buffer and the new ones yet to be read uint32_t totalLength = start + length; - //TODO: check this, not copying buffer every time. if (static_cast<uint32_t>(bufferLength) < totalLength+1) - growBuffer(totalLength); + growBuffer(totalLength, false); //dont copy the buffer over. //Read a length number of characters into the buffer from position start in the inputStream input input->readChars(buffer, start, length); @@ -355,7 +354,7 @@ return reuse; } - void SegmentTermEnum::growBuffer(const uint32_t length) { + void SegmentTermEnum::growBuffer(const uint32_t length, bool force_copy) { //Func - Instantiate a buffer of length length+1 //Pre - length > 0 //Post - pre(buffer) has been deleted with its contents. A new buffer @@ -381,7 +380,7 @@ else buffer = (TCHAR*)realloc(buffer, sizeof(TCHAR) * (bufferLength+1)); - if ( copy ){ + if ( copy || force_copy){ //Copy the text of term into buffer _tcsncpy(buffer,_term->text(),bufferLength); } Modified: trunk/src/CLucene/index/SegmentTermEnum.h =================================================================== --- trunk/src/CLucene/index/SegmentTermEnum.h 2007-02-09 18:48:49 UTC (rev 2502) +++ trunk/src/CLucene/index/SegmentTermEnum.h 2007-02-15 11:07:20 UTC (rev 2503) @@ -131,7 +131,7 @@ /** * Instantiate a buffer of length length+1 */ - void growBuffer(const uint32_t length); + void growBuffer(const uint32_t length, bool force_copy); }; CL_NS_END This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |