@@ -558,10 +558,16 @@ public char[] finishCurrentSegment() {
558
558
_segments .add (_currentSegment );
559
559
int oldLen = _currentSegment .length ;
560
560
_segmentSize += oldLen ;
561
+ _currentSize = 0 ;
562
+
561
563
// Let's grow segments by 50%
562
- int newLen = Math .min (oldLen + (oldLen >> 1 ), MAX_SEGMENT_LEN );
564
+ int newLen = oldLen + (oldLen >> 1 );
565
+ if (newLen < MIN_SEGMENT_LEN ) {
566
+ newLen = MIN_SEGMENT_LEN ;
567
+ } else if (newLen > MAX_SEGMENT_LEN ) {
568
+ newLen = MAX_SEGMENT_LEN ;
569
+ }
563
570
char [] curr = carr (newLen );
564
- _currentSize = 0 ;
565
571
_currentSegment = curr ;
566
572
return curr ;
567
573
}
@@ -655,14 +661,17 @@ private void expand(int minNewSegmentSize)
655
661
_hasSegments = true ;
656
662
_segments .add (curr );
657
663
_segmentSize += curr .length ;
664
+ _currentSize = 0 ;
658
665
int oldLen = curr .length ;
666
+
659
667
// Let's grow segments by 50% minimum
660
- int sizeAddition = oldLen >> 1 ;
661
- if (sizeAddition < minNewSegmentSize ) {
662
- sizeAddition = minNewSegmentSize ;
668
+ int newLen = oldLen + (oldLen >> 1 );
669
+ if (newLen < MIN_SEGMENT_LEN ) {
670
+ newLen = MIN_SEGMENT_LEN ;
671
+ } else if (newLen > MAX_SEGMENT_LEN ) {
672
+ newLen = MAX_SEGMENT_LEN ;
663
673
}
664
- _currentSize = 0 ;
665
- _currentSegment = carr (Math .min (MAX_SEGMENT_LEN , oldLen + sizeAddition ));
674
+ _currentSegment = carr (newLen );
666
675
}
667
676
668
677
private char [] resultArray ()
0 commit comments