Skip to content

Commit 1b54d31

Browse files
Merge pull request #1664 from davidmoten/string-npe
StringObservable.split NPE fixes
2 parents f10fe76 + 2b51591 commit 1b54d31

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

rxjava-contrib/rxjava-string/src/main/java/rx/observables/StringObservable.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,14 +441,16 @@ public Subscriber<? super String> call(final Subscriber<? super String> o) {
441441

442442
@Override
443443
public void onCompleted() {
444-
output(leftOver);
444+
if (leftOver!=null)
445+
output(leftOver);
445446
if (!o.isUnsubscribed())
446447
o.onCompleted();
447448
}
448449

449450
@Override
450451
public void onError(Throwable e) {
451-
output(leftOver);
452+
if (leftOver!=null)
453+
output(leftOver);
452454
if (!o.isUnsubscribed())
453455
o.onError(e);
454456
}

rxjava-contrib/rxjava-string/src/test/java/rx/observables/StringObservableTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,24 @@ public void testSplitOnCollon() {
142142
public void testSplitOnOh() {
143143
testSplit("boo:and:foo", "o", 0, "b", "", ":and:f");
144144
}
145+
146+
@Test
147+
public void testSplitOnEmptyStream() {
148+
assertEquals(0, (int) StringObservable.split(Observable.<String>empty(), "\n")
149+
.count().toBlocking().single());
150+
}
151+
152+
@Test
153+
public void testSplitOnStreamThatThrowsExceptionImmediately() {
154+
RuntimeException ex = new RuntimeException("boo");
155+
try {
156+
StringObservable.split(Observable.<String>error(ex), "\n")
157+
.count().toBlocking().single();
158+
fail();
159+
} catch (RuntimeException e) {
160+
assertEquals(ex, e);
161+
}
162+
}
145163

146164
public void testSplit(String str, String regex, int limit, String... parts) {
147165
testSplit(str, regex, 0, Observable.from(str), parts);

0 commit comments

Comments
 (0)