AppletLoader: set all streams that are open to use try/finally blocks to close the streams

This commit is contained in:
kappa1 2012-04-22 23:05:10 +00:00
parent f575c37815
commit 15d4e8af94
1 changed files with 52 additions and 39 deletions

View File

@ -1143,10 +1143,13 @@ public class AppletLoader extends Applet implements Runnable, AppletStub {
*/
protected void writeObjectFile(File file, Object object) throws Exception {
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream dos = new ObjectOutputStream(fos);
dos.writeObject(object);
dos.close();
fos.close();
try {
ObjectOutputStream dos = new ObjectOutputStream(fos);
dos.writeObject(object);
dos.close();
} finally {
fos.close();
}
}
/**
@ -1602,15 +1605,17 @@ public class AppletLoader extends Applet implements Runnable, AppletStub {
byte [] buffer = new byte [1<<14];
int ret = inputHandle.read(buffer);
while (ret >= 1) {
outputHandle.write(buffer,0,ret);
ret = inputHandle.read(buffer);
try {
int ret = inputHandle.read(buffer);
while (ret >= 1) {
outputHandle.write(buffer,0,ret);
ret = inputHandle.read(buffer);
}
} finally {
inputHandle.close();
outputHandle.close();
}
inputHandle.close();
outputHandle.close();
// delete LZMA file, as it is no longer needed
f.delete();
}
@ -1630,17 +1635,19 @@ public class AppletLoader extends Applet implements Runnable, AppletStub {
OutputStream outputHandle = new FileOutputStream(out);
byte [] buffer = new byte [1<<14];
int ret = inputHandle.read(buffer);
while (ret >= 1) {
outputHandle.write(buffer,0,ret);
ret = inputHandle.read(buffer);
try {
byte [] buffer = new byte [1<<14];
int ret = inputHandle.read(buffer);
while (ret >= 1) {
outputHandle.write(buffer,0,ret);
ret = inputHandle.read(buffer);
}
} finally {
inputHandle.close();
outputHandle.close();
}
inputHandle.close();
outputHandle.close();
// delete GZip file, as it is no longer needed
f.delete();
}
@ -1655,11 +1662,14 @@ public class AppletLoader extends Applet implements Runnable, AppletStub {
File f = new File(in);
FileOutputStream fostream = new FileOutputStream(out);
JarOutputStream jostream = new JarOutputStream(fostream);
Pack200.Unpacker unpacker = Pack200.newUnpacker();
unpacker.unpack(f, jostream);
jostream.close();
fostream.close();
try {
Pack200.Unpacker unpacker = Pack200.newUnpacker();
unpacker.unpack(f, jostream);
} finally {
jostream.close();
fostream.close();
}
// delete pack file as its no longer needed
f.delete();
@ -1803,21 +1813,23 @@ public class AppletLoader extends Applet implements Runnable, AppletStub {
InputStream in = jarFile.getInputStream(jarFile.getEntry(entry.getName()));
OutputStream out = new FileOutputStream(path + "natives" + File.separator + entry.getName());
int bufferSize;
byte buffer[] = new byte[65536];
while ((bufferSize = in.read(buffer, 0, buffer.length)) != -1) {
debug_sleep(10);
out.write(buffer, 0, bufferSize);
currentSizeExtract += bufferSize;
// update progress bar
percentage = 65 + (int)(percentageParts * (jarNum + currentSizeExtract/(float)totalSizeExtract));
subtaskMessage = "Extracting: " + entry.getName() + " " + ((currentSizeExtract * 100) / totalSizeExtract) + "%";
try {
int bufferSize;
byte buffer[] = new byte[65536];
while ((bufferSize = in.read(buffer, 0, buffer.length)) != -1) {
debug_sleep(10);
out.write(buffer, 0, bufferSize);
currentSizeExtract += bufferSize;
// update progress bar
percentage = 65 + (int)(percentageParts * (jarNum + currentSizeExtract/(float)totalSizeExtract));
subtaskMessage = "Extracting: " + entry.getName() + " " + ((currentSizeExtract * 100) / totalSizeExtract) + "%";
}
} finally {
in.close();
out.close();
}
in.close();
out.close();
// validate the certificate for the native file being extracted
if (!certificatesMatch(certificate, entry.getCertificates())) {
@ -1881,6 +1893,7 @@ public class AppletLoader extends Applet implements Runnable, AppletStub {
JarURLConnection jurl = (JarURLConnection) (new URL("jar:" + location.toString() + "!/org/lwjgl/util/applet/AppletLoader.class").openConnection());
jurl.setDefaultUseCaches(true);
certificate = jurl.getCertificates();
jurl.setDefaultUseCaches(false);
}
return certificate;