From 9fcb8e7bb0a2e80294cf8587daeea380fcc2c52c Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Fri, 21 Dec 2007 11:57:35 +0000 Subject: [PATCH] Fix for 213456: Misuse of IMarker.LOCATION attribute breaks API and leads to ClassCastExceptions --- .../internal/core/scannerconfig2/SCMarkerGenerator.java | 6 +++--- .../src/org/eclipse/cdt/core/resources/ACBuilder.java | 4 ++-- .../debug/internal/core/breakpoints/BreakpointProblems.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCMarkerGenerator.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCMarkerGenerator.java index 20efcee7513..368db77f39b 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCMarkerGenerator.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig2/SCMarkerGenerator.java @@ -57,7 +57,7 @@ public class SCMarkerGenerator implements IMarkerGenerator { */ if ((cur != null) && (cur.length > 0)) { for (int i = 0; i < cur.length; i++) { - int line = ((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue(); + int line = ((Integer) cur[i].getAttribute(IMarker.LINE_NUMBER)).intValue(); int sev = ((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue(); String mesg = (String) cur[i].getAttribute(IMarker.MESSAGE); if (line == problemMarkerInfo.lineNumber && sev == mapMarkerSeverity(problemMarkerInfo.severity) && mesg.equals(problemMarkerInfo.description)) { @@ -67,7 +67,7 @@ public class SCMarkerGenerator implements IMarkerGenerator { } IMarker marker = problemMarkerInfo.file.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER); - marker.setAttribute(IMarker.LOCATION, problemMarkerInfo.lineNumber); + marker.setAttribute(IMarker.LOCATION, String.valueOf(problemMarkerInfo.lineNumber)); marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description); marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(problemMarkerInfo.severity)); marker.setAttribute(IMarker.LINE_NUMBER, problemMarkerInfo.lineNumber); @@ -95,7 +95,7 @@ public class SCMarkerGenerator implements IMarkerGenerator { List exactMarkers = new ArrayList(); for (int i = 0; i < markers.length; i++) { IMarker marker = markers[i]; - int location = ((Integer) marker.getAttribute(IMarker.LOCATION)).intValue(); + int location = ((Integer) marker.getAttribute(IMarker.LINE_NUMBER)).intValue(); String error = (String) marker.getAttribute(IMarker.MESSAGE); int sev = ((Integer) marker.getAttribute(IMarker.SEVERITY)).intValue(); if (location == lineNumber && diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java index 8328d5fe34a..643f2d3886a 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java @@ -49,7 +49,7 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa */ if ((cur != null) && (cur.length > 0)) { for (int i = 0; i < cur.length; i++) { - int line = ((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue(); + int line = ((Integer) cur[i].getAttribute(IMarker.LINE_NUMBER)).intValue(); int sev = ((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue(); String mesg = (String) cur[i].getAttribute(IMarker.MESSAGE); if (line == problemMarkerInfo.lineNumber && sev == mapMarkerSeverity(problemMarkerInfo.severity) && mesg.equals(problemMarkerInfo.description)) { @@ -59,7 +59,7 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa } IMarker marker = markerResource.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER); - marker.setAttribute(IMarker.LOCATION, problemMarkerInfo.lineNumber); + marker.setAttribute(IMarker.LOCATION, String.valueOf(problemMarkerInfo.lineNumber)); marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description); marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(problemMarkerInfo.severity)); marker.setAttribute(IMarker.LINE_NUMBER, problemMarkerInfo.lineNumber); diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java index 3a502d0fe59..097bccea050 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointProblems.java @@ -149,7 +149,7 @@ public class BreakpointProblems { */ if ((cur != null) && (cur.length > 0)) { for (int i = 0; i < cur.length; i++) { - int line = ((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue(); + int line = ((Integer) cur[i].getAttribute(IMarker.LINE_NUMBER)).intValue(); int sev = ((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue(); String mesg = (String) cur[i].getAttribute(IMarker.MESSAGE); if (line == problemMarkerInfo.lineNumber && sev == problemMarkerInfo.severity && mesg.equals(problemMarkerInfo.description)) { @@ -159,7 +159,7 @@ public class BreakpointProblems { } IMarker marker = markerResource.createMarker(BREAKPOINT_PROBLEM_MARKER_ID); - marker.setAttribute(IMarker.LOCATION, problemMarkerInfo.lineNumber); + marker.setAttribute(IMarker.LOCATION, String.valueOf(problemMarkerInfo.lineNumber)); marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description); marker.setAttribute(IMarker.SEVERITY, problemMarkerInfo.severity); marker.setAttribute(IMarker.LINE_NUMBER, problemMarkerInfo.lineNumber);