diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java
index 1022eb2ee11a6a61bdc2e1bd046ad82a23d0d894..170e4ddbe06337a68b7dfde88d5bb2c33e6864cb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PacketLineIn.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2009, Google Inc.
+ * Copyright (C) 2008-2010, Google Inc.
  * Copyright (C) 2008-2009, Robin Rosenberg <robin.rosenberg@dewire.com>
  * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
  * and other copyright owners as documented in the project's IP log.
@@ -72,11 +72,11 @@ static enum AckNackResult {
 
 	private final InputStream in;
 
-	private final byte[] lenbuffer;
+	private final byte[] lineBuffer;
 
 	PacketLineIn(final InputStream i) {
 		in = i;
-		lenbuffer = new byte[4];
+		lineBuffer = new byte[SideBandOutputStream.SMALL_BUF];
 	}
 
 	AckNackResult readACK(final MutableObjectId returnedId) throws IOException {
@@ -124,22 +124,27 @@ String readStringRaw() throws IOException {
 
 		len -= 4; // length header (4 bytes)
 
-		final byte[] raw = new byte[len];
+		byte[] raw;
+		if (len <= lineBuffer.length)
+			raw = lineBuffer;
+		else
+			raw = new byte[len];
+
 		IO.readFully(in, raw, 0, len);
 		return RawParseUtils.decode(Constants.CHARSET, raw, 0, len);
 	}
 
 	int readLength() throws IOException {
-		IO.readFully(in, lenbuffer, 0, 4);
+		IO.readFully(in, lineBuffer, 0, 4);
 		try {
-			final int len = RawParseUtils.parseHexInt16(lenbuffer, 0);
+			final int len = RawParseUtils.parseHexInt16(lineBuffer, 0);
 			if (len != 0 && len < 4)
 				throw new ArrayIndexOutOfBoundsException();
 			return len;
 		} catch (ArrayIndexOutOfBoundsException err) {
 			throw new IOException("Invalid packet line header: "
-					+ (char) lenbuffer[0] + (char) lenbuffer[1]
-					+ (char) lenbuffer[2] + (char) lenbuffer[3]);
+					+ (char) lineBuffer[0] + (char) lineBuffer[1]
+					+ (char) lineBuffer[2] + (char) lineBuffer[3]);
 		}
 	}
 }