diff --git a/pom.xml b/pom.xml
index 69ba0be..2ad2a55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
jar
redis.clients
jedis
- 2.5.1-SNAPSHOT
+ 2.5.2-SNAPSHOT
Jedis
Jedis is a blazingly small and sane Redis java client.
https://github.com/xetorthio/jedis
diff --git a/src/main/java/redis/clients/util/RedisOutputStream.java b/src/main/java/redis/clients/util/RedisOutputStream.java
index 4dba859..dcec7fa 100644
--- a/src/main/java/redis/clients/util/RedisOutputStream.java
+++ b/src/main/java/redis/clients/util/RedisOutputStream.java
@@ -34,10 +34,10 @@ public final class RedisOutputStream extends FilterOutputStream {
}
public void write(final byte b) throws IOException {
- buf[count++] = b;
if (count == buf.length) {
flushBuffer();
}
+ buf[count++] = b;
}
public void write(final byte[] b) throws IOException {
@@ -63,10 +63,10 @@ public final class RedisOutputStream extends FilterOutputStream {
final int size = in.length();
for (int i = 0; i != size; ++i) {
- buf[count++] = (byte) in.charAt(i);
if (count == buf.length) {
flushBuffer();
}
+ buf[count++] = (byte) in.charAt(i);
}
writeCrLf();
@@ -111,19 +111,19 @@ public final class RedisOutputStream extends FilterOutputStream {
char c = str.charAt(i);
if (!(c < 0x80))
break;
- buf[count++] = (byte) c;
if (count == buf.length) {
flushBuffer();
}
+ buf[count++] = (byte) c;
}
for (; i < strLen; i++) {
char c = str.charAt(i);
if (c < 0x80) {
- buf[count++] = (byte) c;
if (count == buf.length) {
flushBuffer();
}
+ buf[count++] = (byte) c;
} else if (c < 0x800) {
if (2 >= buf.length - count) {
flushBuffer();
diff --git a/src/test/java/redis/clients/jedis/tests/ProtocolTest.java b/src/test/java/redis/clients/jedis/tests/ProtocolTest.java
index 504a66a..4245aae 100644
--- a/src/test/java/redis/clients/jedis/tests/ProtocolTest.java
+++ b/src/test/java/redis/clients/jedis/tests/ProtocolTest.java
@@ -4,6 +4,7 @@ import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.ArrayList;
@@ -38,6 +39,28 @@ public class ProtocolTest extends JedisTestBase {
assertEquals(expectedCommand, sb.toString());
}
+
+ @Test(expected=IOException.class)
+ public void writeOverflow() throws IOException {
+ RedisOutputStream ros = new RedisOutputStream(new OutputStream() {
+
+ @Override
+ public void write(int b) throws IOException {
+ throw new IOException("thrown exception");
+
+ }
+ });
+
+ ros.write(new byte[8191]);
+
+ try {
+ ros.write((byte)'*');
+ } catch (IOException ioe) {}
+
+
+ ros.write((byte)'*');
+
+ }
@Test
public void bulkReply() {