--- src/contribs-lib/CLucene/highlighter/Highlighter.cpp.orig	2011-03-16 20:21:07.000000000 -0400
+++ src/contribs-lib/CLucene/highlighter/Highlighter.cpp	2013-03-27 19:05:00.000000000 -0400
@@ -214,8 +214,9 @@
 			int32_t startOffset;
 			int32_t endOffset;
 			int32_t lastEndOffset = 0;
+			int len;
 			_textFragmenter->start(text);
-			TCHAR substringBuffer[LUCENE_MAX_WORD_LEN];
+			TCHAR substringBuffer[LUCENE_MAX_WORD_LEN+1];
 
 			TokenGroup* tokenGroup=_CLNEW TokenGroup();
 
@@ -229,8 +230,9 @@
 					 startOffset = tokenGroup->getStartOffset();
 					 endOffset = tokenGroup->getEndOffset();
 
-					 _tcsncpy(substringBuffer,text+startOffset,endOffset-startOffset);
-					 substringBuffer[endOffset-startOffset]=_T('\0');
+					 len = cl_min(endOffset-startOffset,LUCENE_MAX_WORD_LEN);
+					 _tcsncpy(substringBuffer,text+startOffset,len);
+					 substringBuffer[len]=_T('\0');
 
 					 TCHAR* encoded = _encoder->encodeText(substringBuffer);
 					 TCHAR* markedUpText=_formatter->highlightTerm(encoded, tokenGroup);
@@ -238,9 +240,7 @@
 
 					 //store any whitespace etc from between this and last group
 					 if (startOffset > lastEndOffset){
-						 int len = startOffset-lastEndOffset;
-						 if ( len > LUCENE_MAX_FIELD_LEN )
-							 len = LUCENE_MAX_FIELD_LEN;
+						 len = cl_min(startOffset-lastEndOffset,LUCENE_MAX_FIELD_LEN);
 						 _tcsncpy(buffer,text+lastEndOffset,len);
 						 buffer[len]=_T('\0');
 
@@ -287,8 +287,9 @@
   	            startOffset = tokenGroup->getStartOffset();
   	            endOffset = tokenGroup->getEndOffset();
 
-				_tcsncpy(substringBuffer,text+startOffset,endOffset-startOffset);
-				substringBuffer[endOffset-startOffset]=_T('\0');
+		    len = cl_min(endOffset-startOffset,LUCENE_MAX_WORD_LEN);
+		    _tcsncpy(substringBuffer,text+startOffset,len);
+		    substringBuffer[len]=_T('\0');
 
 				TCHAR* encoded = _encoder->encodeText(substringBuffer);
         TCHAR* markedUpText=_formatter->highlightTerm(encoded, tokenGroup);
@@ -393,6 +394,7 @@
 				}
 			}
 		)
+		return NULL;
 	}