diff options
author | Karsten Thoms | 2018-03-16 15:32:22 +0000 |
---|---|---|
committer | Jay Arthanareeswaran | 2018-05-21 08:42:44 +0000 |
commit | 95dc2d8aefb5a76afa0aa18c2377113a9ae06fd5 (patch) | |
tree | 3b8255a8af741bfbf3270b96f4795781a85fc822 | |
parent | 7de5e9f339960be6ad4801436c29eddc5a8f6be4 (diff) | |
download | eclipse.jdt.core-95dc2d8aefb5a76afa0aa18c2377113a9ae06fd5.tar.gz eclipse.jdt.core-95dc2d8aefb5a76afa0aa18c2377113a9ae06fd5.tar.xz eclipse.jdt.core-95dc2d8aefb5a76afa0aa18c2377113a9ae06fd5.zip |
Bug 532545 - setChildren: Check for zero-length array argumentI20180522-2000I20180522-0800I20180521-2000I20180521-0800
Change-Id: Ic00132b0637be5ee8f0a984b3b9018ab17b0c3a0
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
4 files changed, 16 insertions, 8 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java index 06ab4b6a1f..03c6d80b19 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClassFile.java @@ -76,7 +76,7 @@ protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, if (typeInfo == null) { // The structure of a class file is unknown if a class file format errors occurred //during the creation of the diet class file representative of this ClassFile. - info.setChildren(new IJavaElement[] {}); + info.setChildren(JavaElement.NO_ELEMENTS); return false; } diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OpenableElementInfo.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OpenableElementInfo.java index 5509a8b08c..c33c0e163e 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OpenableElementInfo.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OpenableElementInfo.java @@ -85,7 +85,7 @@ public class OpenableElementInfo extends JavaElementInfo { } public void setChildren(IJavaElement[] children) { - this.children = children; + this.children= (children.length > 0) ? children : JavaElement.NO_ELEMENTS; } public void setModule(IModuleDescription module) { diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragment.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragment.java index 2020f29257..25ea679696 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragment.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragment.java @@ -115,9 +115,13 @@ protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, } } - IJavaElement[] children = new IJavaElement[vChildren.size()]; - vChildren.toArray(children); - info.setChildren(children); + if (!vChildren.isEmpty()) { + IJavaElement[] children = new IJavaElement[vChildren.size()]; + vChildren.toArray(children); + info.setChildren(children); + } else { + info.setChildren(JavaElement.NO_ELEMENTS); + } return true; } /** diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java index 1b950d2e76..8362861e46 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java @@ -206,9 +206,13 @@ protected boolean computeChildren(OpenableElementInfo info, IResource underlying // if (module != null && module.exists()) { // vChildren.add(new ClassFile(getPackageFragment(CharOperation.NO_STRINGS), String.valueOf(TypeConstants.MODULE_INFO_NAME))); // } - IJavaElement[] children = new IJavaElement[vChildren.size()]; - vChildren.toArray(children); - info.setChildren(children); + if (!vChildren.isEmpty()) { + IJavaElement[] children = new IJavaElement[vChildren.size()]; + vChildren.toArray(children); + info.setChildren(children); + } else { + info.setChildren(JavaElement.NO_ELEMENTS); + } } } catch (JavaModelException e) { //problem resolving children; structure remains unknown |