On Jan 2, 2018, at 9:01 AM, Alan Bateman <[email protected]> wrote:
>> One thing that I noticed when looking at this is that in the fix for >> https://bugs.openjdk.java.net/browse/JDK-8193842, the Files.copy() method >> had a loop like >> >> while ((n = read(…)) > 0) >> >> whereas InputStream.transferTo() had >> >> while((n = read(…)) >= 0) >> >> which is to say that Files.copy() would terminate if there were an empty >> read() but transferTo() would not. The patch for 8193842 therefore possibly >> introduced a subtle behavioral change which no one noticed. >> > read(byte[]) is blocking so it should only return 0 if called with a 0-length > array. Good point so “>” should be used. > So not clear to me that Files.copy methods needs to use this. So you are suggesting leaving the call to InputStream.transferTo() in preference to IOSupport.copy()? > For JrtPath then the code is specific to the jimage -> jimage case. I think > that can be left along too or just replaced with a better implementation for > jrtfs. It would simplify this patch a little to leave this part out. Brian
