summaryrefslogtreecommitdiff
path: root/scripting
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-08-19 12:07:14 +0100
committerCaolán McNamara <caolanm@redhat.com>2016-08-19 13:00:44 +0100
commit6830d8c2083fa66cc113f587cbfc4aa5a4f8a535 (patch)
treee822fb9dca710eb48402ce6e4756864e1b426c6b /scripting
parent21b0cbfdc531379cfdd8359941ac6c6a4b8b66fd (diff)
coverity#1371372 Resource leak on an exceptional path
and coverity#1371366 Resource leak on an exceptional path coverity#1371376 Resource leak on an exceptional path Change-Id: Ic0fd05f02b1d78a47d4ee924dee8f10811586d0d
Diffstat (limited to 'scripting')
-rw-r--r--scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java6
-rw-r--r--scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java12
-rw-r--r--scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java10
-rw-r--r--scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java10
4 files changed, 30 insertions, 8 deletions
diff --git a/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java b/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
index b3f3c50b8603..73ba06938884 100644
--- a/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
+++ b/scripting/java/com/sun/star/script/framework/provider/ClassLoaderFactory.java
@@ -31,7 +31,7 @@ public class ClassLoaderFactory {
private ClassLoaderFactory() {}
- public static ClassLoader getURLClassLoader(ScriptMetaData scriptData) {
+ public static URLClassLoader getURLClassLoader(ScriptMetaData scriptData) {
ClassLoader parent = scriptData.getClass().getClassLoader();
URL[] classPath = scriptData.getClassPath();
LogUtils.DEBUG("Classpath has length " + classPath.length);
@@ -43,8 +43,8 @@ public class ClassLoaderFactory {
return getURLClassLoader(parent, classPath);
}
- private static ClassLoader getURLClassLoader(ClassLoader parent,
+ private static URLClassLoader getURLClassLoader(ClassLoader parent,
URL[] classpath) {
return new URLClassLoader(classpath, parent);
}
-} \ No newline at end of file
+}
diff --git a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java
index c832e6ed691f..b444cce8e46f 100644
--- a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java
+++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptEditorForBeanShell.java
@@ -35,6 +35,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
+import java.net.URLClassLoader;
import java.util.HashMap;
import java.util.Map;
@@ -180,15 +181,14 @@ public class ScriptEditorForBeanShell implements ScriptEditor, ActionListener {
*/
public void edit(final XScriptContext context, ScriptMetaData entry) {
if (entry != null) {
+ URLClassLoader cl = null;
try {
- ClassLoader cl = null;
-
try {
cl = ClassLoaderFactory.getURLClassLoader(entry);
} catch (Exception ignore) { // TODO re-examine error handling
}
- final ClassLoader theCl = cl;
+ final URLClassLoader theCl = cl;
final URL url = entry.getSourceURL();
SwingInvocation.invoke(
new Runnable() {
@@ -210,6 +210,12 @@ public class ScriptEditorForBeanShell implements ScriptEditor, ActionListener {
});
} catch (IOException ioe) {
showErrorMessage("Error loading file: " + ioe.getMessage());
+ if (cl != null) {
+ try {
+ cl.close();
+ } catch (IOException e) {
+ }
+ }
}
}
}
diff --git a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java
index 2aabba71242b..76ee4eff55f7 100644
--- a/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java
+++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/ScriptProviderForBeanShell.java
@@ -49,7 +49,9 @@ import com.sun.star.uno.Any;
import com.sun.star.uno.Type;
import com.sun.star.uno.XComponentContext;
+import java.io.IOException;
import java.net.URL;
+import java.net.URLClassLoader;
import java.util.StringTokenizer;
@@ -182,13 +184,19 @@ class ScriptImpl implements XScript {
aOutParamIndex[0] = new short[0];
aOutParam[0] = new Object[0];
- ClassLoader cl = null;
+ URLClassLoader cl = null;
URL sourceUrl = null;
try {
cl = ClassLoaderFactory.getURLClassLoader(metaData);
sourceUrl = metaData.getSourceURL();
} catch (java.net.MalformedURLException mfu) {
+ if (cl != null) {
+ try {
+ cl.close();
+ } catch (IOException e) {
+ }
+ }
// Framework error
throw new ScriptFrameworkErrorException(
mfu.getMessage(), null,
diff --git a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java
index 9465a646f64d..359ac4a2632e 100644
--- a/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java
+++ b/scripting/java/com/sun/star/script/framework/provider/javascript/ScriptProviderForJavaScript.java
@@ -44,7 +44,9 @@ import com.sun.star.script.provider.XScript;
import com.sun.star.uno.XComponentContext;
+import java.io.IOException;
import java.net.URL;
+import java.net.URLClassLoader;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ImporterTopLevel;
@@ -181,12 +183,18 @@ class ScriptImpl implements XScript {
aOutParamIndex[0] = new short[0];
aOutParam[0] = new Object[0];
- ClassLoader cl = null;
+ URLClassLoader cl = null;
try {
cl = ClassLoaderFactory.getURLClassLoader(metaData);
metaData.getSourceURL();
} catch (java.net.MalformedURLException mfu) {
+ if (cl != null) {
+ try {
+ cl.close();
+ } catch (IOException e) {
+ }
+ }
throw new ScriptFrameworkErrorException(
mfu.getMessage(), null,
metaData.getLanguageName(), metaData.getLanguage(),