fix, dcd broken, zombies has to be killed before a query, not after

This commit is contained in:
Basile Burg 2015-01-21 10:39:38 +01:00
parent 3d1e964db3
commit abd7e09552
1 changed files with 13 additions and 13 deletions

View File

@ -25,6 +25,7 @@ type
fDoc: TCESynMemo; fDoc: TCESynMemo;
fProj: TCEProject; fProj: TCEProject;
procedure killServer; procedure killServer;
procedure terminateClient;
// //
procedure projNew(aProject: TCEProject); procedure projNew(aProject: TCEProject);
procedure projChanged(aProject: TCEProject); procedure projChanged(aProject: TCEProject);
@ -91,6 +92,8 @@ begin
if fTempLines <> nil then if fTempLines <> nil then
fTempLines.Free; fTempLines.Free;
killServer; killServer;
fServer.Free;
fClient.Free;
inherited; inherited;
end; end;
{$ENDREGION} {$ENDREGION}
@ -161,6 +164,12 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION DCD things ------------------------------------------------------------} {$REGION DCD things ------------------------------------------------------------}
procedure TCEDcdWrapper.terminateClient;
begin
if fClient.Running then
fClient.Terminate(0);
end;
procedure TCEDcdWrapper.killServer; procedure TCEDcdWrapper.killServer;
begin begin
if not fAvailable then exit; if not fAvailable then exit;
@ -171,6 +180,7 @@ begin
fClient.Execute; fClient.Execute;
{$IFDEF LINUX} {$IFDEF LINUX}
fClient.Terminate(0); fClient.Terminate(0);
fServer.Terminate(0);
{$ENDIF} {$ENDIF}
end; end;
@ -187,9 +197,6 @@ begin
fClient.Parameters.Clear; fClient.Parameters.Clear;
fClient.Parameters.Add('-I' + aFolder); fClient.Parameters.Add('-I' + aFolder);
fClient.Execute; fClient.Execute;
{$IFDEF LINUX}
fClient.Terminate(0);
{$ENDIF}
end; end;
procedure TCEDcdWrapper.getComplAtCursor(aList: TStrings); procedure TCEDcdWrapper.getComplAtCursor(aList: TStrings);
@ -205,6 +212,7 @@ begin
fTempLines.Assign(fDoc.Lines); fTempLines.Assign(fDoc.Lines);
fTempLines.SaveToFile(fDoc.tempFilename); fTempLines.SaveToFile(fDoc.tempFilename);
// //
terminateClient;
fClient.Parameters.Clear; fClient.Parameters.Clear;
fClient.Parameters.Add('-c'); fClient.Parameters.Add('-c');
fClient.Parameters.Add(intToStr(fDoc.SelStart - 1)); fClient.Parameters.Add(intToStr(fDoc.SelStart - 1));
@ -212,9 +220,6 @@ begin
fClient.Execute; fClient.Execute;
// //
fTempLines.LoadFromStream(fClient.Output); fTempLines.LoadFromStream(fClient.Output);
{$IFDEF LINUX}
fClient.Terminate(0);
{$ENDIF}
if fTempLines.Count = 0 then exit; if fTempLines.Count = 0 then exit;
// //
asComp := fTempLines.Strings[0] = 'identifiers'; asComp := fTempLines.Strings[0] = 'identifiers';
@ -261,6 +266,7 @@ begin
fTempLines.Assign(fDoc.Lines); fTempLines.Assign(fDoc.Lines);
fTempLines.SaveToFile(fDoc.tempFilename); fTempLines.SaveToFile(fDoc.tempFilename);
// //
terminateClient;
fClient.Parameters.Clear; fClient.Parameters.Clear;
fClient.Parameters.Add('-d'); fClient.Parameters.Add('-d');
fClient.Parameters.Add('-c'); fClient.Parameters.Add('-c');
@ -270,12 +276,8 @@ begin
// //
aComment := ''; aComment := '';
fTempLines.LoadFromStream(fClient.Output); fTempLines.LoadFromStream(fClient.Output);
{$IFDEF LINUX}
fClient.Terminate(0);
{$ENDIF}
for i := 0 to fTempLines.Count-1 do for i := 0 to fTempLines.Count-1 do
aComment += ReplaceStr(fTempLines.Strings[i], '\n', LineEnding); aComment += ReplaceStr(fTempLines.Strings[i], '\n', LineEnding);
end; end;
procedure TCEDcdWrapper.getDeclFromCursor(out aFilename: string; out aPosition: Integer); procedure TCEDcdWrapper.getDeclFromCursor(out aFilename: string; out aPosition: Integer);
@ -289,6 +291,7 @@ begin
fTempLines.Assign(fDoc.Lines); fTempLines.Assign(fDoc.Lines);
fTempLines.SaveToFile(fDoc.tempFilename); fTempLines.SaveToFile(fDoc.tempFilename);
// //
terminateClient;
fClient.Parameters.Clear; fClient.Parameters.Clear;
fClient.Parameters.Add('-l'); fClient.Parameters.Add('-l');
fClient.Parameters.Add('-c'); fClient.Parameters.Add('-c');
@ -299,9 +302,6 @@ begin
str := 'a'; str := 'a';
setlength(str, 256); setlength(str, 256);
i := fClient.Output.Read(str[1], 256); i := fClient.Output.Read(str[1], 256);
{$IFDEF LINUX}
fClient.Terminate(0);
{$ENDIF}
setLength(str, i); setLength(str, i);
if str <> '' then if str <> '' then
begin begin