Real algorithm for reading (even large) arrays
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 16 Dec 2012 18:48:57 +0100
changeset 325acba19bef022
parent 324 46db65995983
child 326 23b4a344fe02
Real algorithm for reading (even large) arrays
vm/src/test/java/org/apidesign/vm4brwsr/BytesLoader.java
     1.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/BytesLoader.java	Sat Dec 15 21:37:57 2012 +0100
     1.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/BytesLoader.java	Sun Dec 16 18:48:57 2012 +0100
     1.3 @@ -38,9 +38,13 @@
     1.4              throw new IOException("Can't find " + name);
     1.5          }
     1.6          byte[] arr = new byte[is.available()];
     1.7 -        int len = is.read(arr);
     1.8 -        if (len != arr.length) {
     1.9 -            throw new IOException("Read only " + len + " wanting " + arr.length);
    1.10 +        int offset = 0;
    1.11 +        while (offset < arr.length) {
    1.12 +            int len = is.read(arr, offset, arr.length - offset);
    1.13 +            if (len == -1) {
    1.14 +                throw new IOException("Can't read " + name);
    1.15 +            }
    1.16 +            offset += len;
    1.17          }
    1.18          /*
    1.19          System.err.print("loader['" + name + "'] = [");