File tree Expand file tree Collapse file tree 1 file changed +13
-15
lines changed
src/main/java/rx/internal/operators Expand file tree Collapse file tree 1 file changed +13
-15
lines changed Original file line number Diff line number Diff line change @@ -897,29 +897,24 @@ final void removeFirst() {
897897 size --;
898898 // can't just move the head because it would retain the very first value
899899 // can't null out the head's value because of late replayers would see null
900- setFirst (next . get () );
900+ setFirst (next );
901901 }
902- final void removeSome (int n ) {
902+ /* test */ final void removeSome (int n ) {
903903 Node head = get ();
904904 while (n > 0 ) {
905905 head = head .get ();
906906 n --;
907907 size --;
908908 }
909909
910- setFirst (head . get () );
910+ setFirst (head );
911911 }
912912 /**
913913 * Arranges the given node is the new head from now on.
914914 * @param n
915915 */
916916 final void setFirst (Node n ) {
917- Node newHead = new Node (null );
918- newHead .lazySet (n );
919- if (n == null ) {
920- tail = newHead ;
921- }
922- set (newHead );
917+ set (n );
923918 }
924919
925920 @ Override
@@ -1119,21 +1114,23 @@ Object leaveTransform(Object value) {
11191114 void truncate () {
11201115 long timeLimit = scheduler .now () - maxAgeInMillis ;
11211116
1122- Node head = get ();
1123- Node next = head .get ();
1117+ Node prev = get ();
1118+ Node next = prev .get ();
11241119
11251120 int e = 0 ;
11261121 for (;;) {
11271122 if (next != null ) {
11281123 if (size > limit ) {
11291124 e ++;
11301125 size --;
1126+ prev = next ;
11311127 next = next .get ();
11321128 } else {
11331129 Timestamped <?> v = (Timestamped <?>)next .value ;
11341130 if (v .getTimestampMillis () <= timeLimit ) {
11351131 e ++;
11361132 size --;
1133+ prev = next ;
11371134 next = next .get ();
11381135 } else {
11391136 break ;
@@ -1144,15 +1141,15 @@ void truncate() {
11441141 }
11451142 }
11461143 if (e != 0 ) {
1147- setFirst (next );
1144+ setFirst (prev );
11481145 }
11491146 }
11501147 @ Override
11511148 void truncateFinal () {
11521149 long timeLimit = scheduler .now () - maxAgeInMillis ;
11531150
1154- Node head = get ();
1155- Node next = head .get ();
1151+ Node prev = get ();
1152+ Node next = prev .get ();
11561153
11571154 int e = 0 ;
11581155 for (;;) {
@@ -1161,6 +1158,7 @@ void truncateFinal() {
11611158 if (v .getTimestampMillis () <= timeLimit ) {
11621159 e ++;
11631160 size --;
1161+ prev = next ;
11641162 next = next .get ();
11651163 } else {
11661164 break ;
@@ -1170,7 +1168,7 @@ void truncateFinal() {
11701168 }
11711169 }
11721170 if (e != 0 ) {
1173- setFirst (next );
1171+ setFirst (prev );
11741172 }
11751173 }
11761174 }
You can’t perform that action at this time.
0 commit comments