fix #157 - after a gdb session breakpoints deleted from gutter not signaled

This commit is contained in:
Basile Burg 2017-08-16 10:39:13 +02:00
parent 387b2afc81
commit dae1d4c430
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
2 changed files with 14 additions and 9 deletions

View File

@ -242,8 +242,8 @@ type
destructor destroy; override; destructor destroy; override;
function count: integer; function count: integer;
procedure clearFile(const fname: string); procedure clearFile(const fname: string);
procedure deleteItem(const fname: string; line: integer; kind: TBreakPointKind); function deleteItem(const fname: string; line: integer; kind: TBreakPointKind): boolean;
procedure addItem(const fname: string; line: integer; kind: TBreakPointKind); function addItem(const fname: string; line: integer; kind: TBreakPointKind): boolean;
property item[index: integer]: TPersistentBreakPoint read getItem; default; property item[index: integer]: TPersistentBreakPoint read getItem; default;
end; end;
@ -810,29 +810,33 @@ begin
end; end;
end; end;
procedure TPersistentBreakPoints.addItem(const fname: string; line: integer; kind: TBreakPointKind); function TPersistentBreakPoints.addItem(const fname: string; line: integer; kind: TBreakPointKind): boolean;
var var
b: TPersistentBreakPoint; b: TPersistentBreakPoint;
begin begin
result := false;
if not find(fname, line, kind) then if not find(fname, line, kind) then
begin begin
b := TPersistentBreakPoint(fItems.Add); b := TPersistentBreakPoint(fItems.Add);
b.filename:=fname; b.filename:=fname;
b.line:=line; b.line:=line;
b.kind:=kind; b.kind:=kind;
result := true;
end; end;
end; end;
procedure TPersistentBreakPoints.deleteItem(const fname: string; line: integer; kind: TBreakPointKind); function TPersistentBreakPoints.deleteItem(const fname: string; line: integer; kind: TBreakPointKind): boolean;
var var
i: integer; i: integer;
b: TPersistentBreakPoint; b: TPersistentBreakPoint;
begin begin
result := false;
for i := fItems.Count-1 downto 0 do for i := fItems.Count-1 downto 0 do
begin begin
b := item[i]; b := item[i];
if (b.filename = fname) and (b.line = line) and (b.kind = kind) then if (b.filename = fname) and (b.line = line) and (b.kind = kind) then
begin begin
result := true;
fItems.Delete(i); fItems.Delete(i);
break; break;
end; end;
@ -1483,10 +1487,11 @@ procedure TCEGdbWidget.addBreakPoint(const fname: string; line: integer;
kind: TBreakPointKind = bpkBreak); kind: TBreakPointKind = bpkBreak);
var var
r: boolean; r: boolean;
a: boolean = false;
begin begin
if assigned(fBreakPoints) then if assigned(fBreakPoints) then
fBreakPoints.addItem(fname, line, kind); a := fBreakPoints.addItem(fname, line, kind);
if fGdb.isNil or not fGdb.Running then if not a or fGdb.isNil or not fGdb.Running then
exit; exit;
r := fGdbState = gsRunning; r := fGdbState = gsRunning;
if r then if r then
@ -1509,10 +1514,11 @@ procedure TCEGdbWidget.removeBreakPoint(const fname: string; line: integer;
kind: TBreakPointKind = bpkBreak); kind: TBreakPointKind = bpkBreak);
var var
r: boolean; r: boolean;
d: boolean = false;
begin begin
if assigned(fBreakPoints) then if assigned(fBreakPoints) then
fBreakPoints.deleteItem(fname, line, kind); d := fBreakPoints.deleteItem(fname, line, kind);
if fGdb.isNil or not fGdb.Running then if not d or fGdb.isNil or not fGdb.Running then
exit; exit;
r := fGdbState = gsRunning; r := fGdbState = gsRunning;
if r then if r then

View File

@ -3372,7 +3372,6 @@ end;
procedure TCESynMemo.debugStop; procedure TCESynMemo.debugStop;
begin begin
fDebugger := nil;
removeDebugTimeMarks; removeDebugTimeMarks;
end; end;