Bug 181147 - [Indexer] NPE in template instanciation
Summary: [Indexer] NPE in template instanciation
Status: RESOLVED FIXED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-core (show other bugs)
Version: 4.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 4.0   Edit
Assignee: Doug Schaefer CLA
QA Contact:
URL:
Whiteboard:
Keywords: contributed
Depends on:
Blocks:
 
Reported: 2007-04-05 04:31 EDT by Markus Schorn CLA
Modified: 2008-06-20 09:57 EDT (History)
2 users (show)

See Also:


Attachments
proposed patch (1.32 KB, patch)
2007-04-05 15:37 EDT, Bryan Wilkinson CLA
bjorn.freeman-benson: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Schorn CLA 2007-04-05 04:31:14 EDT
When indexing 'SString.cpp', 'Logging_Strategy.cpp', 'Log_Record.cpp',
'Log_Msg.cpp' or 'IOStream.cpp' of the ACE-5.5 source(http://www.cs.wustl.edu/~schmidt/ACE.html) the following NPE is thrown:

java.lang.NullPointerException
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPSpecialization.matchesArguments(PDOMCPPSpecialization.java:164)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassTemplate$InstanceFinder.visit(PDOMCPPClassTemplate.java:303)
	at org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList.accept(PDOMNodeLinkedList.java:51)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassTemplate.getInstance(PDOMCPPClassTemplate.java:325)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassTemplate.deferredInstance(PDOMCPPClassTemplate.java:285)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplates.instantiateTemplate(CPPTemplates.java:1568)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassTemplate.instantiate(PDOMCPPClassTemplate.java:349)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplates.createBinding(CPPTemplates.java:278)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTemplateId.resolveBinding(CPPASTTemplateId.java:78)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.getBaseType(CPPVisitor.java:1620)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createType(CPPVisitor.java:1582)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createType(CPPVisitor.java:1573)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTypedef.getType(CPPTypedef.java:108)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.getUltimateType(CPPSemantics.java:2884)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.getAssociatedScopes(CPPSemantics.java:847)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.createLookupData(CPPSemantics.java:835)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics.resolveBinding(CPPSemantics.java:618)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.resolveBinding(CPPVisitor.java:976)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:189)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:73)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.addSymbols(PDOMWriter.java:130)
Comment 1 Bryan Wilkinson CLA 2007-04-05 13:24:23 EDT
A PDOM specialization gets its template arguments by mapping its template parameters to the appropriate types through an ObjectMap.  The PDOM template parameters, however, do not have hashCode() properly implemented (depends on Bug #180784), so each template argument is null instead.
Comment 2 Bryan Wilkinson CLA 2007-04-05 15:37:48 EDT
Created attachment 63094 [details]
proposed patch

The patch for Bug #180784 addresses one way one encountering this exception.  However, there is another way: if template arguments are problem bindings.  In this case, there simply needs to be a check for null in the appropriate place.
Comment 3 Doug Schaefer CLA 2007-04-09 12:15:32 EDT
Simple enough. Patch applied.
Comment 4 Markus Schorn CLA 2007-04-10 06:50:13 EDT
Thanks, the NPEs are gone. 

With CDT as of 20070410 I get 77 PDOMNotImplementedErrors when parsing ACE/TAO. The problem is already reported in bug 181015, though.
Comment 5 Doug Schaefer CLA 2007-05-13 20:35:21 EDT
Setting to milestone 4.0 so we can generate a report of all bugs fixed in 4.0.
Comment 6 Doug Schaefer CLA 2008-06-03 14:44:47 EDT
assigning
Comment 7 Doug Schaefer CLA 2008-06-03 14:45:08 EDT
done