Skip to content

Commit

Permalink
Fix some crashes, where the caller frees the result of GetTableColumn…
Browse files Browse the repository at this point in the history
…s/Keys/ForeignKeys. Probably fixes #849 and #848
  • Loading branch information
ansgarbecker committed Jan 13, 2020
1 parent 6f314a2 commit 094f65e
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions source/dbconnection.pas
Expand Up @@ -4661,7 +4661,7 @@ function TAdoDBConnection.GetTableColumns(Table: TDBObject): TTableColumnList;
for TableCol in Result do begin for TableCol in Result do begin
if TableCol.Name = Comments.Col('column') then begin if TableCol.Name = Comments.Col('column') then begin
TableCol.Comment := Comments.Col('comment'); TableCol.Comment := Comments.Col('comment');
Break; Break;
end; end;
end; end;
Comments.Next; Comments.Next;
Expand Down Expand Up @@ -8589,28 +8589,31 @@ procedure TDBObject.Drop;
function TDBObject.GetTableColumns: TTableColumnList; function TDBObject.GetTableColumns: TTableColumnList;
begin begin
// Return columns from table object // Return columns from table object
if not Assigned(FTableColumns) then begin Result := Connection.GetTableColumns(Self);
{if not Assigned(FTableColumns) then begin
FTableColumns := Connection.GetTableColumns(Self); FTableColumns := Connection.GetTableColumns(Self);
end; end;
Result := FTableColumns; Result := FTableColumns;}
end; end;


function TDBObject.GetTableKeys: TTableKeyList; function TDBObject.GetTableKeys: TTableKeyList;
begin begin
// Return keys from table object // Return keys from table object
if not Assigned(FTableKeys) then begin Result := Connection.GetTableKeys(Self);
{if not Assigned(FTableKeys) then begin
FTableKeys := Connection.GetTableKeys(Self); FTableKeys := Connection.GetTableKeys(Self);
end; end;
Result := FTableKeys; Result := FTableKeys;}
end; end;


function TDBObject.GetTableForeignKeys: TForeignKeyList; function TDBObject.GetTableForeignKeys: TForeignKeyList;
begin begin
// Return foreign keys from table object // Return foreign keys from table object
if not Assigned(FTableForeignKeys) then begin Result := Connection.GetTableForeignKeys(Self);
{if not Assigned(FTableForeignKeys) then begin
FTableForeignKeys := Connection.GetTableForeignKeys(Self); FTableForeignKeys := Connection.GetTableForeignKeys(Self);
end; end;
Result := FTableForeignKeys; Result := FTableForeignKeys;}
end; end;




Expand Down

0 comments on commit 094f65e

Please sign in to comment.