From 2202283ec4aa75934e7b29aefb0e6b54c725411e Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 11 Feb 2017 20:22:56 +0100 Subject: [PATCH] fix, prevent corrupted history to slow down the app on start/exit --- src/ce_gdb.pas | 23 +++++++++++++++++++++++ src/ce_search.pas | 28 ++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/ce_gdb.pas b/src/ce_gdb.pas index 0d4b1836..1473d8c5 100644 --- a/src/ce_gdb.pas +++ b/src/ce_gdb.pas @@ -286,6 +286,7 @@ type procedure setIgnoredSignals(value: TStringList); procedure setCommandsHistory(value: TStringList); procedure setShortcuts(value: TCEDebugShortcuts); + procedure cleanInvalidHistoryEntries; published property asmSyntax: TAsmSyntax read fAsmSyntax write fAsmSyntax; property autoDisassemble: boolean read fAutoDisassemble write fAutoDisassemble; @@ -302,6 +303,9 @@ type property showRawMiOutput: boolean read fShowRawMiOutput write fShowRawMiOutput; property showOutput: boolean read fShowOutput write fShowOutput; property stopAllThreadsOnBreak: boolean read fStopAllThreadsOnBreak write fStopAllThreadsOnBreak; + protected + procedure beforeSave; override; + procedure afterLoad; override; public constructor create(aOwner: TComponent); override; destructor destroy; override; @@ -637,6 +641,25 @@ begin inherited; end; +procedure TCEDebugOptionsBase.cleanInvalidHistoryEntries; +var + i: integer; +begin + for i := fCommandsHistory.Count-1 downto 0 do + if fCommandsHistory[i].length > 128 then + fCommandsHistory.Delete(i); +end; + +procedure TCEDebugOptionsBase.beforeSave; +begin + cleanInvalidHistoryEntries; +end; + +procedure TCEDebugOptionsBase.afterLoad; +begin + cleanInvalidHistoryEntries; +end; + procedure TCEDebugOptionsBase.setIgnoredSignals(value: TStringList); begin fIgnoredSignals.Assign(value); diff --git a/src/ce_search.pas b/src/ce_search.pas index 1e3368b5..1d604bba 100644 --- a/src/ce_search.pas +++ b/src/ce_search.pas @@ -23,8 +23,12 @@ type fWholeWord: boolean; fMrSearches: TStringList; fMrReplacements: TStringList; + procedure cleanIvnalidHistoryItems; procedure setMrSearches(value: TStringList); procedure setMrReplacements(value: TStringList); + protected + procedure afterLoad; override; + procedure beforeSave; override; published property prompt: boolean read fPrompt write fPrompt; property fromCursor: boolean read fFromCur write fFromCur; @@ -35,7 +39,6 @@ type property recentSearches: TStringList read fMrSearches write setMrSearches; property recentReplacements: TStringList read fMrReplacements write setMrReplacements; public - procedure afterLoad; override; constructor create(aOwner: TComponent); override; destructor destroy; override; procedure assign(source: TPersistent); override; @@ -175,16 +178,10 @@ begin fMrSearches.Assign(value); end; -procedure TCESearchOptions.setMrReplacements(value: TStringList); -begin - fMrReplacements.Assign(value); -end; - -procedure TCESearchOptions.afterLoad; +procedure TCESearchOptions.cleanIvnalidHistoryItems; var i: integer; begin - inherited; for i := fMrReplacements.Count-1 downto 0 do if fMrReplacements[i].length > 128 then fMrReplacements.Delete(i); @@ -192,6 +189,21 @@ begin if fMrSearches[i].length > 128 then fMrSearches.Delete(i); end; + +procedure TCESearchOptions.setMrReplacements(value: TStringList); +begin + fMrReplacements.Assign(value); +end; + +procedure TCESearchOptions.afterLoad; +begin + cleanIvnalidHistoryItems; +end; + +procedure TCESearchOptions.beforeSave; +begin + cleanIvnalidHistoryItems; +end; {$ENDREGION} {$REGION Standard Comp/Obj------------------------------------------------------}