diff --git a/src/java/com/threerings/io/FramedInputStream.java b/src/java/com/threerings/io/FramedInputStream.java index dcebe64b1..c3058886a 100644 --- a/src/java/com/threerings/io/FramedInputStream.java +++ b/src/java/com/threerings/io/FramedInputStream.java @@ -1,5 +1,5 @@ // -// $Id: FramedInputStream.java,v 1.3 2002/12/10 19:33:22 mdb Exp $ +// $Id: FramedInputStream.java,v 1.4 2003/07/06 18:39:55 mdb Exp $ package com.threerings.io; @@ -96,6 +96,18 @@ public class FramedInputStream extends InputStream // what we've got if (_buffer.remaining() > 0) { break; + } else if (_length == -1) { + // if we didn't already have our length, see if we now have + // enough data to obtain it + _length = decodeLength(); + } + + // additionally, if the buffer happened to be exactly as long + // as we needed, we need to break as well + if ((_length > 0) && (_have >= _length)) { + System.err.println("Phew, we would have been screwed in " + + "the previous release (" + _length + ")."); + break; } // otherwise, we've filled up our buffer as a result of this @@ -107,12 +119,6 @@ public class FramedInputStream extends InputStream // don't let things grow without bounds } while (_buffer.capacity() < MAX_BUFFER_CAPACITY); - // if we didn't already have our length, see if we now have enough - // data to obtain it - if (_length == -1) { - _length = decodeLength(); - } - // finally check to see if there's a complete frame in the buffer // and prepare to serve it up if there is return checkForCompleteFrame();