Bug 140424 - ArrayIndexOutOfBoundsException when creating a new project with ScannerConfigurationDiscoveryProfile extension defined
Summary: ArrayIndexOutOfBoundsException when creating a new project with ScannerConfig...
Status: RESOLVED FIXED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-build (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 5.0.2   Edit
Assignee: Elena Laskavaia CLA
QA Contact:
URL:
Whiteboard:
Keywords: contributed
Depends on:
Blocks:
 
Reported: 2006-05-05 15:28 EDT by Yufen Kuo CLA
Modified: 2010-05-28 13:13 EDT (History)
2 users (show)

See Also:


Attachments
Patch (2.07 KB, patch)
2008-10-16 13:53 EDT, Alex Chapiro CLA
cdtdoug: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Yufen Kuo CLA 2006-05-05 15:28:13 EDT
When you have ScannerConfigurationDiscoveryProfile extension defined, while creating a new managed make C++ project, you get ArrayIndexOutOfBoundsException.

Traced the code found that:

ConfigurationElementHandle.getChildren(String name) could return ConfigurationElementHandle.EMPTY_ARRAY. 

but in ScannerInfoProvider constructor, it assumes provider.getChildren always has at least one element, therefore you get ArrayIndexOutOfBoundsException.

below is the stack trace:
java.lang.ArrayIndexOutOfBoundsException: 0
	at org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfile$ScannerInfoProvider.<init>(ScannerConfigProfile.java:213)
	at org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfile.load(ScannerConfigProfile.java:269)
	at org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfile.<init>(ScannerConfigProfile.java:242)
	at org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfileManager.getSCProfileConfiguration(ScannerConfigProfileManager.java:116)
	at org.eclipse.cdt.make.internal.core.scannerconfig2.ScannerConfigProfileManager.getSCProfileInstance(ScannerConfigProfileManager.java:92)
	at org.eclipse.cdt.managedbuilder.internal.scannerconfig.ManagedBuildCPathEntryContainer.getPathEntries(ManagedBuildCPathEntryContainer.java:182)
	at org.eclipse.cdt.internal.core.model.PathEntryManager.getResolvedPathEntries(PathEntryManager.java:457)
	at org.eclipse.cdt.internal.core.model.PathEntryManager.getResolvedPathEntries(PathEntryManager.java:429)
	at org.eclipse.cdt.core.model.CoreModel.getResolvedPathEntries(CoreModel.java:941)
	at org.eclipse.cdt.internal.core.model.CProject.getResolvedPathEntries(CProject.java:401)
	at org.eclipse.cdt.internal.core.model.CProject.computeSourceRoots(CProject.java:596)
	at org.eclipse.cdt.internal.core.model.CProject.getAllSourceRoots(CProject.java:503)
	at org.eclipse.cdt.internal.core.model.CModelManager.create(CModelManager.java:286)
	at org.eclipse.cdt.internal.core.model.CModelManager.create(CModelManager.java:226)
	at org.eclipse.cdt.internal.core.model.DeltaProcessor.createElement(DeltaProcessor.java:92)
	at org.eclipse.cdt.internal.core.model.DeltaProcessor.traverseDelta(DeltaProcessor.java:458)
	at org.eclipse.cdt.internal.core.model.DeltaProcessor.traverseDelta(DeltaProcessor.java:477)
	at org.eclipse.cdt.internal.core.model.DeltaProcessor.processResourceDelta(DeltaProcessor.java:439)
	at org.eclipse.cdt.internal.core.model.CModelManager.resourceChanged(CModelManager.java:746)
	at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:280)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:274)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:256)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:958)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1746)
	at org.eclipse.cdt.internal.core.CDescriptor.save(CDescriptor.java:320)
	at org.eclipse.cdt.internal.core.CDescriptorManager$CDescriptorUpdater.run(CDescriptorManager.java:74)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
Comment 1 Alex Chapiro CLA 2008-10-16 13:53:41 EDT
Created attachment 115285 [details]
Patch

Indeed documentation for extension point ScannerConfigurationDiscoveryProfile doesn't stipulate necessity to define ScannerInfoProvider. This fact was ignored in implementation. This patch fixes the problem.
Comment 2 Elena Laskavaia CLA 2008-10-21 16:29:59 EDT
patch applied on head and 5.0 branch