Codetools: Check for nil SrcTree in TUnitDictionary.ParseUnit. Can happen with invalid code.

git-svn-id: trunk@37667 -
This commit is contained in:
juha 2012-06-16 18:35:34 +00:00
parent 7093e49073
commit 2028f4a305

View File

@ -1087,8 +1087,7 @@ begin
IncreaseChangeStamp; IncreaseChangeStamp;
end; end;
function TUnitDictionary.ParseUnit(UnitFilename: string; Group: TUDUnitGroup function TUnitDictionary.ParseUnit(UnitFilename: string; Group: TUDUnitGroup): TUDUnit;
): TUDUnit;
var var
Code: TCodeBuffer; Code: TCodeBuffer;
begin begin
@ -1101,8 +1100,7 @@ begin
Result:=ParseUnit(Code,Group); Result:=ParseUnit(Code,Group);
end; end;
function TUnitDictionary.ParseUnit(Code: TCodeBuffer; Group: TUDUnitGroup function TUnitDictionary.ParseUnit(Code: TCodeBuffer; Group: TUDUnitGroup): TUDUnit;
): TUDUnit;
begin begin
Result:=nil; Result:=nil;
if Code=nil then exit; if Code=nil then exit;
@ -1111,8 +1109,7 @@ begin
Result:=ParseUnit(CodeToolBoss.CurCodeTool,Group); Result:=ParseUnit(CodeToolBoss.CurCodeTool,Group);
end; end;
function TUnitDictionary.ParseUnit(Tool: TCodeTool; Group: TUDUnitGroup function TUnitDictionary.ParseUnit(Tool: TCodeTool; Group: TUDUnitGroup): TUDUnit;
): TUDUnit;
var var
SrcTree: TAVLTree; SrcTree: TAVLTree;
AVLNode: TAVLTreeNode; AVLNode: TAVLTreeNode;
@ -1163,6 +1160,7 @@ begin
// update list of identifiers // update list of identifiers
Changed:=false; Changed:=false;
SrcTree:=Tool.InterfaceIdentifierCache.Items; SrcTree:=Tool.InterfaceIdentifierCache.Items;
if SrcTree<>nil then begin
AVLNode:=SrcTree.FindLowest; AVLNode:=SrcTree.FindLowest;
PrevItem:=nil; PrevItem:=nil;
CurItem:=Result.FirstIdentifier; CurItem:=Result.FirstIdentifier;
@ -1216,13 +1214,13 @@ begin
end; end;
AVLNode:=SrcTree.FindSuccessor(AVLNode); AVLNode:=SrcTree.FindSuccessor(AVLNode);
end; end;
end;
if Changed then if Changed then
IncreaseChangeStamp; IncreaseChangeStamp;
end; end;
function TUnitDictionary.FindUnitWithFilename(const aFilename: string function TUnitDictionary.FindUnitWithFilename(const aFilename: string): TUDUnit;
): TUDUnit;
var var
AVLNode: TAVLTreeNode; AVLNode: TAVLTreeNode;
begin begin