1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

fix broken buffer cache, 73378

This commit is contained in:
Andrew Niefer 2004-09-07 15:38:00 +00:00
parent 85245150d4
commit 3831dd4b2e

View file

@ -84,7 +84,7 @@ public class Scanner2 implements IScanner, IScannerData {
int count;
private ExpressionEvaluator expressionEvaluator = new ExpressionEvaluator();
private final Map fileCache = new HashMap(100);
private final CharArrayObjectMap fileCache = new CharArrayObjectMap(100);
// The context stack
private static final int bufferInitialSize = 8;
@ -1486,12 +1486,13 @@ public class Scanner2 implements IScanner, IScannerData {
{
String absolutePath = parentFile.getAbsolutePath();
String finalPath = ScannerUtility.createReconciledPath( absolutePath, filename );
reader = (CodeReader)fileCache.get(finalPath);
if (reader == null)
reader = (CodeReader)fileCache.get(finalPath.toCharArray());
if (reader == null){
reader = ScannerUtility.createReaderDuple( finalPath, requestor, getWorkingCopies() );
if (reader != null) {
if (reader.filename != null)
if (reader != null && reader.filename != null)
fileCache.put(reader.filename, reader);
}
if (reader != null) {
if (dlog != null) dlog.println("#include \"" + finalPath + "\""); //$NON-NLS-1$ //$NON-NLS-2$
IASTInclusion inclusion = getASTFactory().createInclusion( fileNameArray, reader.filename, local, startOffset, startingLineNumber, nameOffset, nameEndOffset, nameLine, endOffset, endLine, getCurrentFilename() );
pushContext(reader.buffer, new InclusionData( reader, inclusion ));
@ -1513,12 +1514,13 @@ public class Scanner2 implements IScanner, IScannerData {
continue;
}
} else {
reader = (CodeReader)fileCache.get(finalPath);
if (reader == null)
reader = (CodeReader)fileCache.get(finalPath.toCharArray());
if (reader == null){
reader = ScannerUtility.createReaderDuple( finalPath, requestor, getWorkingCopies() );
if (reader != null) {
if (reader.filename != null)
if (reader != null && reader.filename != null)
fileCache.put(reader.filename, reader);
}
if (reader != null) {
if (dlog != null) dlog.println("#include <" + finalPath + ">"); //$NON-NLS-1$ //$NON-NLS-2$
IASTInclusion inclusion = getASTFactory().createInclusion( fileNameArray, reader.filename, local, startOffset, startingLineNumber, nameOffset, nameEndOffset, nameLine, endOffset, endLine, getCurrentFilename() );
pushContext(reader.buffer, new InclusionData( reader, inclusion ));