Skip to content

Commit a82eff9

Browse files
committed
Fixed potential request value overflow.
1 parent f6fd5de commit a82eff9

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/main/java/rx/internal/util/BackpressureDrainManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,14 +142,17 @@ public final void request(long n) {
142142
r = requestedCount;
143143
mayDrain = r == 0;
144144
if (r == Long.MAX_VALUE) {
145-
mayDrain = true;
146145
break;
147146
}
148147
if (n == Long.MAX_VALUE) {
149148
u = n;
150149
mayDrain = true;
151150
} else {
152-
u = r + n;
151+
if (r > Long.MAX_VALUE - n) {
152+
u = Long.MAX_VALUE;
153+
} else {
154+
u = r + n;
155+
}
153156
}
154157
} while (!REQUESTED_COUNT.compareAndSet(this, r, u));
155158
// since we implement producer, we have to call drain

0 commit comments

Comments
 (0)