Le 14/06/12 19:37, Phil Race a écrit :
I think it acceptable to make it call checkClosed() conpatibility wise
since apps must already be ready
for an IOException and are actually less like to be ready for the NPE ..
After a second look to the code, it appears to have been the original
intend. All ImageInputStream and ImageOutputStream implementations
invoke super.close(), which in turn invoke checkClosed(). It just
appears that FileCacheImageOutputStream is making this invocation too
late - we get a NPE before to reach (indirectly) the checkClosed() call.
I attached to this email the new proposed fix.
Martin
diff -r b3246687c369
src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java
--- a/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java
Wed Jun 13 16:57:34 2012 -0700
+++ b/src/share/classes/javax/imageio/stream/FileCacheImageOutputStream.java
Thu Jun 14 22:22:15 2012 +0200
@@ -222,11 +222,11 @@
* @exception IOException if an error occurs.
*/
public void close() throws IOException {
+ super.close(); // Must be invoked before dereferencing 'cache'.
maxStreamPos = cache.length();
seek(maxStreamPos);
flushBefore(maxStreamPos);
- super.close();
cache.close();
cache = null;
cacheFile.delete();