Hello all, Thanks for the comments. A new patch is here:
http://cr.openjdk.java.net/~bpb/4026465/webrev.02/ On Dec 30, 2014, at 6:15 PM, joe darcy <joe.da...@oracle.com> wrote: > The new changes generally look good. A few comments, for the new code like > > 291 } else if ((off < 0) || (off > val.length) || (len < 0) || > 292 ((off + len) > val.length) || ((off + len) < 0)) { > 293 throw new IndexOutOfBoundsException(); > > it is not immediately clear that the arithmetic on line 292 won't have some > inappropriate overflow behavior. A comment stating why "off + len" will > behave appropriately (assuming it does behave appropriately ;-) would help. > (By line 292, both off and len are non-negative so that should limit the case > analysis.) Logic updated. > It might be worthwhile for all the BigInteger constructors which take array > arguments to state something about the thread-safely behavior ("arrays are > assumed to be unchanged for the duration of the constructor call...”). Verbiage added. > Do have have any code coverage information for the new code by the regression > test? It would be good to know whether or not all the guard conditions are > properly being executed. No coverage information, but I added some tests for the guard conditions and slightly changed the correct-value part of the test. On Dec 30, 2014, at 6:42 PM, Paul Benedict <pbened...@apache.org> wrote: > Please add @since 1.9 to the new constructors. Done. On Jan 2, 2015, at 1:57 AM, Alan Bateman <alan.bate...@oracle.com> wrote: > I assume this can be reduced down to: > if (off < 0 || len < 0 || (off > val.length - len)) { ... } But then if len > val.length, the third inequality tests ‘off’ for being greater than a negative value. Please see the updated patch. Thanks, Brian