In this patch:
- Improved error handling for Indexer
- Improved error handling for MatchLocator
- Bounds checking for mappings in IncudeEntry
- Improved error handling for Merge operations
- Source file name fitering for recreating an already existing index
This patch adds a layer of separation between the indexer and the parser by running the parser in its own thread. This allows the indexer to finish all jobs regardless of the individual parser outcomes. Also fixed a potential EOF bug while reading stored indexes.
for https://bugs.eclipse.org/bugs/show_bug.cgi?id=50821
The consequences of not applying it is that the scanner's error handling
strategy causes an out-of-memory error to happen on a unterminated
character literal when CModelBuilder kicks in (i.e. on save or reconcile).
The problem was that binaryParser scheme was
a perfomance problem affecting a lot of people
when projects were medium/big size. The IBinaryParser
was extended to allow one more method isbinary()
so that will let the BinaryParser open() the file
only once instead of multiple time like it did before.
Cherrypick from master 2003-11-18 16:20:49 UTC Alain Magloire <alain@qnx.com> 'Attempt to address performance problem in the IBinaryParser':
core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/ARMember.java
core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/BinaryArchive.java
core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/BinaryObject.java
core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/PEParser.java
core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/coff/parser/Symbol.java
core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/elf/parser/ElfParser.java
debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/SourceUtils.java