You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by kr...@apache.org on 2007/05/27 19:22:36 UTC

svn commit: r542005 - in /db/derby/code/trunk/java: drda/org/apache/derby/impl/drda/EXTDTAInputStream.java engine/org/apache/derby/iapi/services/io/NewByteArrayInputStream.java engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java

Author: kristwaa
Date: Sun May 27 10:22:35 2007
New Revision: 542005

URL: http://svn.apache.org/viewvc?view=rev&rev=542005
Log:
DERBY-2686: Brushed up two skip methods; one to return 0 when a negative amount to skip is passed in, the other one will now break when 0 is returned from the underlying stream. No assumption is made about EOF, this is still up to the higher level streams, but the skip method will no longer hang forever if there is less bytes than requested in skip. Also removed some unused imports.
Patch file: derby-2686-3a.diff

Modified:
    db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/EXTDTAInputStream.java
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/NewByteArrayInputStream.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java

Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/EXTDTAInputStream.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/EXTDTAInputStream.java?view=diff&rev=542005&r1=542004&r2=542005
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/EXTDTAInputStream.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/EXTDTAInputStream.java Sun May 27 10:22:35 2007
@@ -20,7 +20,6 @@
  */
 package org.apache.derby.impl.drda;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.BufferedInputStream;
@@ -29,8 +28,6 @@
 import java.sql.Clob;
 import java.sql.SQLException;
 
-import java.io.UnsupportedEncodingException;
-
 import org.apache.derby.iapi.reference.DRDAConstants;
 import org.apache.derby.iapi.services.sanity.SanityManager;
 import org.apache.derby.impl.jdbc.Util;
@@ -252,6 +249,9 @@
 	 * @see java.io.InputStream#skip(long)
 	 */
 	public long skip(long arg0) throws IOException {
+		if (arg0 < 0L) {
+			return 0L;
+		}
 		return binaryInputStream.skip(arg0);
 	}
 

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/NewByteArrayInputStream.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/NewByteArrayInputStream.java?view=diff&rev=542005&r1=542004&r2=542005
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/NewByteArrayInputStream.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/NewByteArrayInputStream.java Sun May 27 10:22:35 2007
@@ -81,8 +81,9 @@
 		if (data == null)
 			throw new IOException();
 
-		if (length == 0)
-			return -1;
+		if (length == 0 || count <= 0L) {
+			return 0L;
+		}
 
 		if (count > length)
 			count = length;

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java?view=diff&rev=542005&r1=542004&r2=542005
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java Sun May 27 10:22:35 2007
@@ -21,7 +21,6 @@
 
 package org.apache.derby.impl.store.raw.data;
 
-import java.io.InputStream;
 import java.io.IOException;
 
 public abstract class BufferedByteHolderInputStream
@@ -48,10 +47,14 @@
 
 	public long skip(long count) throws IOException
 	{
-		int bytesSkipped = 0;
+		long bytesSkipped = 0L;
 		while (bytesSkipped < count) {
 			fillByteHolder();
-			bytesSkipped += super.skip(count - bytesSkipped);
+			long skipped = super.skip(count - bytesSkipped);
+			if (skipped <= 0L) {
+				break;
+			}
+			bytesSkipped += skipped;
 		}
 		return bytesSkipped;
 	}