# HG changeset patch # User bpb # Date 1511367165 28800 # Node ID 52c9e8d2f8d9a453efed4058f561f4391d688cc7 # Parent 66350f079368747eb655c92179d5775527368285 8191516: OutputStream.write(byte[],int,int) could have fewer parameter bounds checks Summary: Reduce parameter bounds checks from five to three as in InputStream::read Reviewed-by: psandoz diff -r 66350f079368 -r 52c9e8d2f8d9 src/java.base/share/classes/java/io/InputStream.java --- a/src/java.base/share/classes/java/io/InputStream.java Wed Nov 22 16:12:05 2017 +0100 +++ b/src/java.base/share/classes/java/io/InputStream.java Wed Nov 22 08:12:45 2017 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -164,11 +164,9 @@ * @see java.io.InputStream#read() */ public int read(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if (off < 0 || len < 0 || len > b.length - off) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { + Objects.requireNonNull(b); + Objects.checkFromIndexSize(off, len, b.length); + if (len == 0) { return 0; } @@ -302,8 +300,8 @@ */ public int readNBytes(byte[] b, int off, int len) throws IOException { Objects.requireNonNull(b); - if (off < 0 || len < 0 || len > b.length - off) - throw new IndexOutOfBoundsException(); + Objects.checkFromIndexSize(off, len, b.length); + int n = 0; while (n < len) { int count = read(b, off + n, len - n); diff -r 66350f079368 -r 52c9e8d2f8d9 src/java.base/share/classes/java/io/OutputStream.java --- a/src/java.base/share/classes/java/io/OutputStream.java Wed Nov 22 16:12:05 2017 +0100 +++ b/src/java.base/share/classes/java/io/OutputStream.java Wed Nov 22 08:12:45 2017 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package java.io; +import java.util.Objects; + /** * This abstract class is the superclass of all classes representing * an output stream of bytes. An output stream accepts output bytes @@ -104,14 +106,9 @@ * stream is closed. */ public void write(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (len < 0) || - ((off + len) > b.length) || ((off + len) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return; - } + Objects.requireNonNull(b); + Objects.checkFromIndexSize(off, len, b.length); + // len == 0 condition implicitly handled by loop bounds for (int i = 0 ; i < len ; i++) { write(b[off + i]); }