Skip to content

Commit b551b57

Browse files
committed
fix: make sure all images created are disposed
1 parent cb67cee commit b551b57

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

plugin/src/main/java/io/snyk/eclipse/plugin/views/snyktoolview/BaseTreeNode.java

+26-6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.eclipse.swt.graphics.ImageDataProvider;
1515
import org.eclipse.ui.model.WorkbenchLabelProvider;
1616

17+
import io.snyk.eclipse.plugin.utils.SnykLogger;
18+
1719
public class BaseTreeNode extends TreeNode {
1820
private ImageDescriptor imageDescriptor;
1921
private String text = "";
@@ -58,16 +60,34 @@ public void removeChildren() {
5860
public void setImageDescriptor(ImageDescriptor imageDescriptor) {
5961
this.imageDescriptor = imageDescriptor;
6062
}
61-
63+
6264
protected ImageDescriptor getImageDescriptor(IResource object) {
63-
ILabelProvider labelProvider = WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider();
65+
ILabelProvider labelProvider = null;
66+
Image image = null;
67+
6468
try {
65-
Image image = labelProvider.getImage(object);
66-
if (image == null || image.isDisposed())
69+
labelProvider = WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider();
70+
image = labelProvider.getImage(object);
71+
72+
if (image == null || image.isDisposed()) {
6773
return null;
68-
74+
}
75+
6976
return getImageDescriptorFromImage(image);
77+
78+
} catch (Exception e) {
79+
SnykLogger.logError(e);
80+
return null;
7081
} finally {
82+
disposeResources(labelProvider, image);
83+
}
84+
}
85+
86+
private void disposeResources(ILabelProvider labelProvider, Image image) {
87+
if (image != null && !image.isDisposed()) {
88+
image.dispose();
89+
}
90+
if (labelProvider != null) {
7191
labelProvider.dispose();
7292
}
7393
}
@@ -107,7 +127,7 @@ public String getDetails() {
107127

108128
protected ImageDescriptor getImageDescriptorFromImage(Image image) {
109129
final var data = image.getImageData();
110-
130+
111131
ImageDataProvider provider = new ImageDataProvider() {
112132
@Override
113133
public ImageData getImageData(int zoom) {

0 commit comments

Comments
 (0)