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() {
897
897
size --;
898
898
// can't just move the head because it would retain the very first value
899
899
// can't null out the head's value because of late replayers would see null
900
- setFirst (next . get () );
900
+ setFirst (next );
901
901
}
902
- final void removeSome (int n ) {
902
+ /* test */ final void removeSome (int n ) {
903
903
Node head = get ();
904
904
while (n > 0 ) {
905
905
head = head .get ();
906
906
n --;
907
907
size --;
908
908
}
909
909
910
- setFirst (head . get () );
910
+ setFirst (head );
911
911
}
912
912
/**
913
913
* Arranges the given node is the new head from now on.
914
914
* @param n
915
915
*/
916
916
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 );
923
918
}
924
919
925
920
@ Override
@@ -1119,21 +1114,23 @@ Object leaveTransform(Object value) {
1119
1114
void truncate () {
1120
1115
long timeLimit = scheduler .now () - maxAgeInMillis ;
1121
1116
1122
- Node head = get ();
1123
- Node next = head .get ();
1117
+ Node prev = get ();
1118
+ Node next = prev .get ();
1124
1119
1125
1120
int e = 0 ;
1126
1121
for (;;) {
1127
1122
if (next != null ) {
1128
1123
if (size > limit ) {
1129
1124
e ++;
1130
1125
size --;
1126
+ prev = next ;
1131
1127
next = next .get ();
1132
1128
} else {
1133
1129
Timestamped <?> v = (Timestamped <?>)next .value ;
1134
1130
if (v .getTimestampMillis () <= timeLimit ) {
1135
1131
e ++;
1136
1132
size --;
1133
+ prev = next ;
1137
1134
next = next .get ();
1138
1135
} else {
1139
1136
break ;
@@ -1144,15 +1141,15 @@ void truncate() {
1144
1141
}
1145
1142
}
1146
1143
if (e != 0 ) {
1147
- setFirst (next );
1144
+ setFirst (prev );
1148
1145
}
1149
1146
}
1150
1147
@ Override
1151
1148
void truncateFinal () {
1152
1149
long timeLimit = scheduler .now () - maxAgeInMillis ;
1153
1150
1154
- Node head = get ();
1155
- Node next = head .get ();
1151
+ Node prev = get ();
1152
+ Node next = prev .get ();
1156
1153
1157
1154
int e = 0 ;
1158
1155
for (;;) {
@@ -1161,6 +1158,7 @@ void truncateFinal() {
1161
1158
if (v .getTimestampMillis () <= timeLimit ) {
1162
1159
e ++;
1163
1160
size --;
1161
+ prev = next ;
1164
1162
next = next .get ();
1165
1163
} else {
1166
1164
break ;
@@ -1170,7 +1168,7 @@ void truncateFinal() {
1170
1168
}
1171
1169
}
1172
1170
if (e != 0 ) {
1173
- setFirst (next );
1171
+ setFirst (prev );
1174
1172
}
1175
1173
}
1176
1174
}
You can’t perform that action at this time.
0 commit comments