From a8cf65fa75e32249bb753f44a058da024e8af6ee Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Thu, 8 Feb 2018 20:42:17 -0500 Subject: [PATCH] Bug 529383 - NPE in CheckersRegistry.getResourceProfile() Change-Id: I376cbf44c1fd237bd75a98ffc9e1daf60f5924ec --- .../ui/quickfix/CaseBreakQuickFixFallthroughAttribute.java | 3 +++ .../eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/codan/org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/internal/checkers/ui/quickfix/CaseBreakQuickFixFallthroughAttribute.java b/codan/org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/internal/checkers/ui/quickfix/CaseBreakQuickFixFallthroughAttribute.java index f72294bfc84..1642ae0b96b 100644 --- a/codan/org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/internal/checkers/ui/quickfix/CaseBreakQuickFixFallthroughAttribute.java +++ b/codan/org.eclipse.cdt.codan.checkers.ui/src/org/eclipse/cdt/codan/internal/checkers/ui/quickfix/CaseBreakQuickFixFallthroughAttribute.java @@ -29,6 +29,9 @@ public class CaseBreakQuickFixFallthroughAttribute extends AbstractCaseBreakQuic @Override public boolean isApplicable(IMarker marker) { IProblem problem = getProblem(marker); + if (problem == null) { + return false; + } RootProblemPreference map = (RootProblemPreference) problem.getPreference(); boolean enabled = (boolean) map.getChildValue(CaseBreakChecker.PARAM_ENABLE_FALLTHROUGH_QUICKFIX); boolean last_case_enabled = (boolean) map.getChildValue(CaseBreakChecker.PARAM_LAST_CASE); diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java index 430cd68f7b9..50c8eca3911 100644 --- a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java +++ b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/ui/AbstractCodanCMarkerResolution.java @@ -275,6 +275,11 @@ public abstract class AbstractCodanCMarkerResolution implements ICodanMarkerReso public IProblem getProblem(IMarker marker) { IResource resource = marker.getResource(); + if (resource == null) { + // IMarker.getResource() is not supposed to return null, + // but it looks like it sometimes does (bug 529383). + return null; + } IProblemProfile profile = CodanRuntime.getInstance().getCheckersRegistry().getResourceProfile(resource); String id = getProblemId(marker); return profile.findProblem(id);