Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] fix for 69199

This patch prevents some NPEs from happening in the class browser. I suggest this should be applied to both HEAD and CDT_2_0 branch.

-Chris

Index: src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java,v
retrieving revision 1.3
diff -u -r1.3 CElementLabels.java
--- src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java	24 Jun 2004 19:29:33 -0000	1.3
+++ src/org/eclipse/cdt/internal/ui/viewsupport/CElementLabels.java	6 Jul 2004 15:22:49 -0000
@@ -326,8 +326,11 @@
 		
 		//qualification
 		if( getFlag( flags, M_FULLY_QUALIFIED ) ){
-			getTypeLabel( method.getParent(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf );
-			buf.append( "::" ); //$NON-NLS-1$
+			ICElement parent = method.getParent();
+			if (parent != null && parent.exists()) {
+				getTypeLabel( parent, T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf );
+				buf.append( "::" ); //$NON-NLS-1$
+			}
 		}
 		
 		buf.append( method.getElementName() );
@@ -455,9 +458,11 @@
 	public static void getTypeLabel(ICElement elem, int flags, StringBuffer buf) {
 		if (getFlag(flags, T_FULLY_QUALIFIED)) {
 			ISourceRoot root= CModelUtil.getSourceRoot(elem);
-			getSourceRootLabel(root, (flags & P_COMPRESSED), buf);
-			buf.append(root.getElementName());
-			buf.append('.');
+			if (root != null) {
+				getSourceRootLabel(root, (flags & P_COMPRESSED), buf);
+				buf.append(root.getElementName());
+				buf.append('.');
+			}
 		}
 		
 		String typeName= elem.getElementName();
Index: browser/org/eclipse/cdt/core/browser/TypeInfo.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/TypeInfo.java,v
retrieving revision 1.7
diff -u -r1.7 TypeInfo.java
--- browser/org/eclipse/cdt/core/browser/TypeInfo.java	21 Jun 2004 19:14:22 -0000	1.7
+++ browser/org/eclipse/cdt/core/browser/TypeInfo.java	6 Jul 2004 15:22:33 -0000
@@ -58,7 +58,10 @@
 		ITypeReference ref = getResolvedReference();
 		if (ref != null) {
 			ICElement[] elems = ref.getCElements();
-			if (elems.length > 1) {
+			if (elems != null && elems.length > 0) {
+				if (elems.length == 1)
+					return elems[0];
+
 				for (int i = 0; i < elems.length; ++i) {
 					ICElement elem = elems[i];
 					if (elem.getElementType() == fElementType && elem.getElementName().equals(getName())) {
@@ -66,8 +69,6 @@
 						return elem;
 					}
 				}
-			} else if (elems.length == 1) {
-				return elems[0];
 			}
 		}
 		return null;

Back to the top