diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/ImageLoader.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/ImageLoader.java
index a7bd3e96757..29a1decc627 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/ImageLoader.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/ImageLoader.java
@@ -193,7 +193,7 @@ public ImageData[] load(InputStream stream, int zoom) {
}
}
} catch (IOException e) {
- //ignore.
+ SWT.error(SWT.ERROR_INVALID_IMAGE);
}
}
return loadDefault(stream);
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_SVGRasterizer.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_SVGRasterizer.java
new file mode 100644
index 00000000000..eb2249c10dc
--- /dev/null
+++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_graphics_SVGRasterizer.java
@@ -0,0 +1,93 @@
+package org.eclipse.swt.tests.junit;
+
+import static org.eclipse.swt.tests.junit.SwtTestUtil.assertSWTProblem;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.net.URL;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageDataProvider;
+import org.eclipse.swt.graphics.ImageFileNameProvider;
+import org.eclipse.swt.widgets.Display;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Test_org_eclipse_swt_graphics_SVGRasterizer {
+ Display display;
+
+ ImageFileNameProvider imageFileNameProvider = zoom -> {
+ String fileName = "collapseall.svg";
+ return getPath(fileName);
+ };
+
+ ImageDataProvider imageDataProvider = zoom -> {
+ String fileName = "collapseall.svg";
+ return new ImageData(getPath(fileName), zoom);
+ };
+
+ @Before
+ public void setUp() {
+ display = Display.getDefault();
+ }
+
+ String getPath(String fileName) {
+ String urlPath;
+ String pluginPath = System.getProperty("PLUGIN_PATH");
+ if (pluginPath == null) {
+ URL url = getClass().getClassLoader().getResource(fileName);
+ if (url == null) {
+ fail("URL == null for file " + fileName);
+ }
+ urlPath = url.getFile();
+ } else {
+ urlPath = pluginPath + "/data/" + fileName;
+ }
+
+ if (File.separatorChar != '/') urlPath = urlPath.replace('/', File.separatorChar);
+ if (SwtTestUtil.isWindows && urlPath.indexOf(File.separatorChar) == 0) urlPath = urlPath.substring(1);
+ urlPath = urlPath.replaceAll("%20", " ");
+ return urlPath;
+ }
+
+ @Test
+ public void test_ConstructorLorg_eclipse_swt_graphics_Device_ImageFileNameProvider() {
+ // Valid provider
+ Image image = new Image(display, imageFileNameProvider);
+ image.dispose();
+ // Corrupt Image provider
+ ImageFileNameProvider provider = zoom -> {
+ String fileName = "corrupt.svg";
+ return getPath(fileName);
+ };
+ try {
+ image = new Image(display, provider);
+ image.dispose();
+ fail("No exception thrown for corrupt image file.");
+ } catch (SWTException e) {
+ assertSWTProblem("Incorrect exception thrown for provider with corrupt images", SWT.ERROR_INVALID_IMAGE, e);
+ }
+ }
+
+ @Test
+ public void test_ConstructorLorg_eclipse_swt_graphics_Device_ImageDataProvider() {
+ // Valid provider
+ Image image = new Image(display, imageDataProvider);
+ image.dispose();
+ // Corrupt Image provider
+ ImageDataProvider provider = zoom -> {
+ String fileName = "corrupt.svg";
+ return new ImageData(getPath(fileName), zoom);
+ };
+ try {
+ image = new Image(display, provider);
+ image.dispose();
+ fail("No exception thrown for corrupt image file.");
+ } catch (SWTException e) {
+ assertSWTProblem("Incorrect exception thrown for provider with corrupt images", SWT.ERROR_INVALID_IMAGE, e);
+ }
+ }
+}
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/collapseall.svg b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/collapseall.svg
new file mode 100644
index 00000000000..587c3c3497e
--- /dev/null
+++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/collapseall.svg
@@ -0,0 +1,223 @@
+
+
+
+
diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/corrupt.svg b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/corrupt.svg
new file mode 100644
index 00000000000..edac6e7e9f2
--- /dev/null
+++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/corrupt.svg
@@ -0,0 +1,210 @@
+
+
+
+< inkscape:version="0.91 r13725"
+ sodipodi:docname="collapseall.svg">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/org.eclipse.swt.tests/data/collapseall.svg b/tests/org.eclipse.swt.tests/data/collapseall.svg
new file mode 100644
index 00000000000..587c3c3497e
--- /dev/null
+++ b/tests/org.eclipse.swt.tests/data/collapseall.svg
@@ -0,0 +1,223 @@
+
+
+
+
diff --git a/tests/org.eclipse.swt.tests/data/corrupt.svg b/tests/org.eclipse.swt.tests/data/corrupt.svg
new file mode 100644
index 00000000000..edac6e7e9f2
--- /dev/null
+++ b/tests/org.eclipse.swt.tests/data/corrupt.svg
@@ -0,0 +1,210 @@
+
+
+
+< inkscape:version="0.91 r13725"
+ sodipodi:docname="collapseall.svg">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+