--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java @@ -743,7 +743,9 @@ private void dumpBand() throws IOException { assert(optDumpBands); - try (PrintStream ps = new PrintStream(getDumpStream(this, ".txt"))) { + PrintStream ps = null; + try { + ps = new PrintStream(getDumpStream(this, ".txt")); String irr = (bandCoding == regularCoding) ? "" : " irregular"; ps.print("# length="+length+ " size="+outputSize()+ @@ -758,9 +760,19 @@ } printArrayTo(ps, values, 0, length); } - try (OutputStream ds = getDumpStream(this, ".bnd")) { + finally { + if (ps != null) + ps.close(); + } + OutputStream ds = null; + try { + ds = getDumpStream(this, ".bnd"); bandCoding.writeArrayTo(ds, values, 0, length); } + finally { + if (ds != null) + ds.close(); + } } /** Disburse one value. */ @@ -829,12 +841,18 @@ private void dumpBand() throws IOException { assert(optDumpBands); - try (OutputStream ds = getDumpStream(this, ".bnd")) { + OutputStream ds = null; + try { + ds = getDumpStream(this, ".bnd"); if (bytesForDump != null) bytesForDump.writeTo(ds); else bytes.writeTo(ds); } + finally { + if (ds != null) + ds.close(); + } } public void readDataFrom(InputStream in) throws IOException { --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java @@ -149,8 +149,13 @@ if ("--config-file=".equals(state)) { String propFile = av.remove(0); Properties fileProps = new Properties(); - try (InputStream propIn = new FileInputStream(propFile)) { + InputStream propIn = null; + try { + propIn = new FileInputStream(propFile); fileProps.load(propIn); + } finally { + if (propIn != null) + propIn.close(); } if (engProps.get(verboseProp) != null) fileProps.list(System.out); @@ -341,9 +346,14 @@ else fileOut = new FileOutputStream(outfile); fileOut = new BufferedOutputStream(fileOut); - try (JarOutputStream out = new JarOutputStream(fileOut)) { + JarOutputStream out = null; + try { + out = new JarOutputStream(fileOut); junpack.unpack(in, out); // p200 closes in but not out + } finally { + if (out != null) + out.close(); } // At this point, we have a good jarfile (or newfile, if -r) } @@ -404,7 +414,9 @@ long filelen = new File(jarfile).length(); if (filelen <= 0) return ""; long skiplen = Math.max(0, filelen - tail.length); - try (InputStream in = new FileInputStream(new File(jarfile))) { + InputStream in = null; + try { + in = new FileInputStream(new File(jarfile)); in.skip(skiplen); in.read(tail); for (int i = tail.length-4; i >= 0; i--) { @@ -418,6 +430,9 @@ } } return ""; + } finally { + if (in != null) + in.close(); } } --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java @@ -241,9 +241,15 @@ void run(File inFile, JarOutputStream jstream) throws IOException { // %%% maybe memory-map the file, and pass it straight into unpacker ByteBuffer mappedFile = null; - try (FileInputStream fis = new FileInputStream(inFile)) { + FileInputStream fis = null; + try { + fis = new FileInputStream(inFile); run(fis, jstream, mappedFile); } + finally { + if (fis != null) + fis.close(); + } // Note: caller is responsible to finish with jstream. } --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java @@ -540,9 +540,15 @@ Index index = initCPIndex(tag, cpMap); if (optDumpBands) { - try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) { + PrintStream ps = null; + try { + ps = new PrintStream(getDumpStream(index, ".idx")); printArrayTo(ps, index.cpMap, 0, index.cpMap.length); } + finally { + if (ps != null) + ps.close(); + } } } @@ -828,9 +834,10 @@ attr_definition_headers.readFrom(in); attr_definition_name.readFrom(in); attr_definition_layout.readFrom(in); - try (PrintStream dump = !optDumpBands ? null - : new PrintStream(getDumpStream(attr_definition_headers, ".def"))) - { + PrintStream dump = null; + try { + dump = !optDumpBands ? null + : new PrintStream(getDumpStream(attr_definition_headers, ".def")); for (int i = 0; i < numAttrDefs; i++) { int header = attr_definition_headers.getByte(); Utf8Entry name = (Utf8Entry) attr_definition_name.getRef(); @@ -849,6 +856,10 @@ if (dump != null) dump.println(index+" "+def); } } + finally { + if (dump != null) + dump.close(); + } attr_definition_headers.doneDisbursing(); attr_definition_name.doneDisbursing(); attr_definition_layout.doneDisbursing(); --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java @@ -458,9 +458,15 @@ Utils.log.info("Writing "+cpMap.length+" "+ConstantPool.tagName(tag)+" entries..."); if (optDumpBands) { - try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) { + PrintStream ps = null; + try { + ps = new PrintStream(getDumpStream(index, ".idx")); printArrayTo(ps, cpMap, 0, cpMap.length); } + finally { + if (ps != null) + ps.close(); + } } switch (tag) { @@ -921,9 +927,10 @@ } }); attrDefsWritten = new Attribute.Layout[numAttrDefs]; - try (PrintStream dump = !optDumpBands ? null - : new PrintStream(getDumpStream(attr_definition_headers, ".def"))) - { + PrintStream dump = null; + try { + dump = !optDumpBands ? null + : new PrintStream(getDumpStream(attr_definition_headers, ".def")); int[] indexForDebug = Arrays.copyOf(attrIndexLimit, ATTR_CONTEXT_LIMIT); for (int i = 0; i < defs.length; i++) { int header = ((Integer)defs[i][0]).intValue(); @@ -949,6 +956,10 @@ } } } + finally { + if (dump != null) + dump.close(); + } } void writeAttrCounts() throws IOException { --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java @@ -122,8 +122,9 @@ // Do this after the previous props are put in place, // to allow override if necessary. String propFile = "intrinsic.properties"; - - try (InputStream propStr = PackerImpl.class.getResourceAsStream(propFile)) { + InputStream propStr = null; + try { + propStr = PackerImpl.class.getResourceAsStream(propFile); if (propStr == null) { throw new RuntimeException(propFile + " cannot be loaded"); } @@ -131,6 +132,14 @@ } catch (IOException ee) { throw new RuntimeException(ee); } + finally { + try { + if (propStr != null) + propStr.close(); + } catch (IOException ee) { + throw new RuntimeException(ee); + } + } for (Map.Entry e : props.entrySet()) { String key = (String) e.getKey(); --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java @@ -160,9 +160,15 @@ } // Use the stream-based implementation. // %%% Reconsider if native unpacker learns to memory-map the file. - try (FileInputStream instr = new FileInputStream(in)) { + FileInputStream instr = null; + try { + instr = new FileInputStream(in); unpack(instr, out); } + finally { + if (instr != null) + instr.close(); + } if (props.getBoolean(Utils.UNPACK_REMOVE_PACKFILE)) { in.delete(); } --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java.orig +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java @@ -268,18 +268,30 @@ // 4947205 : Peformance is slow when using pack-effort=0 out = new BufferedOutputStream(out); out = new NonCloser(out); // protect from JarOutputStream.close() - try (JarOutputStream jout = new JarOutputStream(out)) { + JarOutputStream jout = null; + try { + jout = new JarOutputStream(out); copyJarFile(in, jout); } + finally { + if (jout != null) + jout.close(); + } } static void copyJarFile(JarFile in, OutputStream out) throws IOException { // 4947205 : Peformance is slow when using pack-effort=0 out = new BufferedOutputStream(out); out = new NonCloser(out); // protect from JarOutputStream.close() - try (JarOutputStream jout = new JarOutputStream(out)) { + JarOutputStream jout = null; + try { + jout = new JarOutputStream(out); copyJarFile(in, jout); } + finally { + if (jout != null) + jout.close(); + } } // Wrapper to prevent closing of client-supplied stream. static private --- openjdk-boot/jdk/src/share/classes/java/lang/Package.java.orig +++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java @@ -575,12 +575,23 @@ * Returns the Manifest for the specified JAR file name. */ private static Manifest loadManifest(String fn) { - try (FileInputStream fis = new FileInputStream(fn); - JarInputStream jis = new JarInputStream(fis, false)) - { + FileInputStream fis = null; + JarInputStream jis = null; + try { + fis = new FileInputStream(fn); + jis = new JarInputStream(fis, false); return jis.getManifest(); } catch (IOException e) { return null; + } finally { + try { + if (jis != null) + jis.close(); + if (fis != null) + fis.close(); + } catch (IOException e) { + return null; + } } } --- openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java.orig +++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java @@ -188,7 +188,7 @@ } catch (Throwable suppressed) { x.addSuppressed(suppressed); } - throw x; + throw (IOException) x; } assert sc.isConnected(); return sc; --- openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java.orig +++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java @@ -122,9 +122,15 @@ if (attrs.isDirectory()) { Files.createDirectory(target); } else { - try (InputStream in = Files.newInputStream(source)) { + InputStream in = null; + try { + in = Files.newInputStream(source); Files.copy(in, target); } + finally { + if (in != null) + in.close(); + } } // copy basic attributes to target @@ -142,7 +148,7 @@ } catch (Throwable suppressed) { x.addSuppressed(suppressed); } - throw x; + throw (IOException) x; } } } --- openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java.orig +++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java @@ -2833,8 +2833,11 @@ } // do the copy - try (OutputStream out = ostream) { - return copy(in, out); + try { + return copy(in, ostream); + } + finally { + ostream.close(); } } @@ -2875,9 +2878,15 @@ // ensure not null before opening file Objects.requireNonNull(out); - try (InputStream in = newInputStream(source)) { + InputStream in = null; + try { + in = newInputStream(source); return copy(in, out); } + finally { + if (in != null) + in.close(); + } } /** @@ -2943,8 +2952,14 @@ if (size > (long)Integer.MAX_VALUE) throw new OutOfMemoryError("Required array size too large"); - try (InputStream in = newInputStream(path)) { - return read(in, (int)size); + InputStream in = null; + try { + in = newInputStream(path); + return read(in, (int)size); + } + finally { + if (in != null) + in.close(); } } @@ -2990,7 +3005,9 @@ public static List readAllLines(Path path, Charset cs) throws IOException { - try (BufferedReader reader = newBufferedReader(path, cs)) { + BufferedReader reader = null; + try { + reader = newBufferedReader(path, cs); List result = new ArrayList<>(); for (;;) { String line = reader.readLine(); @@ -3000,6 +3017,10 @@ } return result; } + finally { + if (reader != null) + reader.close(); + } } /** @@ -3049,7 +3070,9 @@ // ensure bytes is not null before opening file Objects.requireNonNull(bytes); - try (OutputStream out = Files.newOutputStream(path, options)) { + OutputStream out = null; + try { + out = Files.newOutputStream(path, options); int len = bytes.length; int rem = len; while (rem > 0) { @@ -3058,6 +3081,10 @@ rem -= n; } } + finally { + if (out != null) + out.close(); + } return path; } @@ -3109,12 +3136,18 @@ Objects.requireNonNull(lines); CharsetEncoder encoder = cs.newEncoder(); OutputStream out = newOutputStream(path, options); - try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) { + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new OutputStreamWriter(out, encoder)); for (CharSequence line: lines) { writer.append(line); writer.newLine(); } } + finally { + if (writer != null) + writer.close(); + } return path; } } --- openjdk-boot/jdk/src/share/classes/java/util/Currency.java.orig +++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java @@ -233,9 +233,14 @@ "currency.properties"); if (propFile.exists()) { Properties props = new Properties(); - try (FileReader fr = new FileReader(propFile)) { + FileReader fr = null; + try { + fr = new FileReader(propFile); props.load(fr); } + finally { + fr.close(); + } Set keys = props.stringPropertyNames(); Pattern propertiesPattern = Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])"); --- openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java.orig +++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java @@ -376,9 +376,15 @@ */ private byte[] getBytes(ZipEntry ze) throws IOException { byte[] b = new byte[(int)ze.getSize()]; - try (DataInputStream is = new DataInputStream(super.getInputStream(ze))) { + DataInputStream is = null; + try { + is = new DataInputStream(super.getInputStream(ze)); is.readFully(b, 0, b.length); } + finally { + if (is != null) + is.close(); + } return b; } @@ -480,11 +486,15 @@ JarEntry manEntry = getManEntry(); if (manEntry != null) { byte[] b = new byte[(int)manEntry.getSize()]; - try (DataInputStream dis = new DataInputStream( - super.getInputStream(manEntry))) { + DataInputStream dis = null; + try { + dis = new DataInputStream(super.getInputStream(manEntry)); dis.readFully(b, 0, b.length); } - + finally { + if (dis != null) + dis.close(); + } int last = b.length - src.length; int i = 0; next: --- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java.orig +++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java @@ -144,8 +144,9 @@ buf = new char[(int)len]; int read = 0; int offset = 0; - - try (Reader charStream = clob.getCharacterStream()) { + Reader charStream = null; + try { + charStream = clob.getCharacterStream(); if (charStream == null) { throw new SQLException("Invalid Clob object. The call to getCharacterStream " + "returned null which cannot be serialized."); @@ -153,23 +154,41 @@ // Note: get an ASCII stream in order to null-check it, // even though we don't do anything with it. - try (InputStream asciiStream = clob.getAsciiStream()) { + InputStream asciiStream = null; + try { + asciiStream = clob.getAsciiStream(); if (asciiStream == null) { throw new SQLException("Invalid Clob object. The call to getAsciiStream " + "returned null which cannot be serialized."); } } - - try (Reader reader = new BufferedReader(charStream)) { + finally { + if (asciiStream != null) + asciiStream.close(); + } + Reader reader = null; + try { + reader = new BufferedReader(charStream); do { read = reader.read(buf, offset, (int)(len - offset)); offset += read; } while (read > 0); } + finally { + if (reader != null) + reader.close(); + } } catch (java.io.IOException ex) { throw new SerialException("SerialClob: " + ex.getMessage()); } - + finally { + try { + if (charStream != null) + charStream.close(); + } catch (java.io.IOException ex) { + throw new SerialException("SerialClob: " + ex.getMessage()); + } + } origLen = len; } --- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java.orig +++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java @@ -367,9 +367,15 @@ // Load user's implementation of SyncProvider // here. -Drowset.properties=/abc/def/pqr.txt ROWSET_PROPERTIES = strRowsetProperties; - try (FileInputStream fis = new FileInputStream(ROWSET_PROPERTIES)) { + FileInputStream fis = null; + try { + fis = new FileInputStream(ROWSET_PROPERTIES); properties.load(fis); } + finally { + if (fis != null) + fis.close(); + } parseProperties(properties); } @@ -381,15 +387,19 @@ "rowset.properties"; ClassLoader cl = Thread.currentThread().getContextClassLoader(); - - try (InputStream stream = - (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES) - : cl.getResourceAsStream(ROWSET_PROPERTIES)) { + InputStream stream = null; + try { + stream = + (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES) + : cl.getResourceAsStream(ROWSET_PROPERTIES); if (stream == null) { throw new SyncFactoryException( "Resource " + ROWSET_PROPERTIES + " not found"); } properties.load(stream); + } finally { + if (stream != null) + stream.close(); } parseProperties(properties); --- openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java.orig +++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java @@ -194,7 +194,8 @@ * Given a URL, retrieves a JAR file, caches it to disk, and creates a * cached JAR file object. */ - private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController) throws IOException { + private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController) + throws IOException { /* * See if interface is set, then call retrieve function of the class * that implements URLJarFileCallBack interface (sun.plugin - to @@ -211,7 +212,8 @@ JarFile result = null; /* get the stream before asserting privileges */ - try (final InputStream in = url.openConnection().getInputStream()) { + try { + final InputStream in = url.openConnection().getInputStream(); result = AccessController.doPrivileged( new PrivilegedExceptionAction() { public JarFile run() throws IOException { @@ -227,7 +229,10 @@ } catch (IOException ioe) { thr.addSuppressed(ioe); } - throw thr; + throw (IOException) thr; + } finally { + if (in != null) + in.close(); } } }); --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java.orig +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java @@ -255,7 +255,9 @@ this.entries = new HashMap(); // get the initial entries in the directory - try (DirectoryStream stream = Files.newDirectoryStream(dir)) { + DirectoryStream stream = null; + try { + stream = Files.newDirectoryStream(dir); for (Path entry: stream) { // don't follow links long lastModified = @@ -264,6 +266,10 @@ } } catch (DirectoryIteratorException e) { throw e.getCause(); + } finally { + if (stream != null) { + stream.close(); + } } } --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java.orig +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java @@ -92,9 +92,13 @@ tabName = filename; try { lastModified = new File(tabName).lastModified(); - try (KeyTabInputStream kis = - new KeyTabInputStream(new FileInputStream(filename))) { + KeyTabInputStream kis = null; + try { + kis = new KeyTabInputStream(new FileInputStream(filename)); load(kis); + } finally { + if (kis != null) + kis.close(); } } catch (FileNotFoundException e) { entries.clear(); @@ -439,9 +443,13 @@ public synchronized static KeyTab create(String name) throws IOException, RealmException { - try (KeyTabOutputStream kos = - new KeyTabOutputStream(new FileOutputStream(name))) { + KeyTabOutputStream kos = null; + try { + kos = new KeyTabOutputStream(new FileOutputStream(name)); kos.writeVersion(KRB5_KT_VNO); + } finally { + if (kos != null) + kos.close(); } return new KeyTab(name); } @@ -450,12 +458,16 @@ * Saves the file at the directory. */ public synchronized void save() throws IOException { - try (KeyTabOutputStream kos = - new KeyTabOutputStream(new FileOutputStream(tabName))) { + KeyTabOutputStream kos = null; + try { + kos = new KeyTabOutputStream(new FileOutputStream(tabName)); kos.writeVersion(kt_vno); for (int i = 0; i < entries.size(); i++) { kos.writeEntry(entries.elementAt(i)); } + } finally { + if (kos != null) + kos.close(); } } @@ -519,9 +531,13 @@ * @exception IOException. */ public synchronized void createVersion(File file) throws IOException { - try (KeyTabOutputStream kos = - new KeyTabOutputStream(new FileOutputStream(file))) { + KeyTabOutputStream kos = null; + try { + kos = new KeyTabOutputStream(new FileOutputStream(file)); kos.write16(KRB5_KT_VNO); + } finally { + if (kos != null) + kos.close(); } } } --- openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java.orig +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java @@ -179,7 +179,9 @@ // The temporary dir File f = new File(p.getProperty("java.io.tmpdir")); int count = 0; - try (DirectoryStream stream = Files.newDirectoryStream(f.toPath())) { + DirectoryStream stream = null; + try { + stream = Files.newDirectoryStream(f.toPath()); // We use a Random object to choose what file names // should be used. Otherwise on a machine with too // many files, the same first 1024 files always get @@ -194,6 +196,10 @@ break; } } + } finally { + if (stream != null) { + stream.close(); + } } } catch (Exception ex) { md.update((byte)ex.hashCode()); --- openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java.orig +++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java @@ -127,9 +127,15 @@ calendarProps = (Properties) AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws IOException { Properties props = new Properties(); - try (FileInputStream fis = new FileInputStream(fname)) { + FileInputStream fis = null; + try { + fis = new FileInputStream(fname); props.load(fis); } + finally { + if (fis != null) + fis.close(); + } return props; } }); --- openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java.orig +++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java @@ -200,7 +200,7 @@ } private static int[][] getUnicodeRanges() { - List ranges = new ArrayList<>(); + List ranges = new ArrayList(); ranges.add(0); Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0); for (int cp = 0x000001; cp < 0x110000; cp++ ) { --- openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java.orig +++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java @@ -569,11 +569,11 @@ public Void run() throws BackingStoreException { Map m = new TreeMap<>(); long newLastSyncTime = 0; + FileInputStream fis = null; try { newLastSyncTime = prefsFile.lastModified(); - try (FileInputStream fis = new FileInputStream(prefsFile)) { - XmlSupport.importMap(fis, m); - } + fis = new FileInputStream(prefsFile); + XmlSupport.importMap(fis, m); } catch(Exception e) { if (e instanceof InvalidPreferencesFormatException) { getLogger().warning("Invalid preferences format in " @@ -588,6 +588,13 @@ } else { throw new BackingStoreException(e); } + } finally { + try { + if (fis != null) + fis.close(); + } catch (IOException e) { + throw new BackingStoreException(e); + } } // Attempt succeeded; update state prefsCache = m; @@ -614,13 +621,14 @@ AccessController.doPrivileged( new PrivilegedExceptionAction() { public Void run() throws BackingStoreException { + FileOutputStream fos = null; try { if (!dir.exists() && !dir.mkdirs()) throw new BackingStoreException(dir + " create failed."); - try (FileOutputStream fos = new FileOutputStream(tmpFile)) { - XmlSupport.exportMap(fos, prefsCache); - } + + fos = new FileOutputStream(tmpFile); + XmlSupport.exportMap(fos, prefsCache); if (!tmpFile.renameTo(prefsFile)) throw new BackingStoreException("Can't rename " + tmpFile + " to " + prefsFile); @@ -629,6 +637,14 @@ throw (BackingStoreException)e; throw new BackingStoreException(e); } + finally { + try { + if (fos != null) + fos.close(); + } catch (IOException e) { + throw new BackingStoreException(e); + } + } return null; } }); --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java.orig +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java @@ -255,9 +255,16 @@ String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties"; Path file = Paths.get(fstypes); try { - try (ReadableByteChannel rbc = Files.newByteChannel(file)) { + ReadableByteChannel rbc = null; + try { + rbc = Files.newByteChannel(file); result.load(Channels.newReader(rbc, "UTF-8")); } + finally { + if (rbc != null) { + rbc.close(); + } + } } catch (IOException x) { } return result;