From dd4612a33729be46c5ea8651226a1059e729d56c Mon Sep 17 00:00:00 2001 From: bart <9132501-flyingsheep@users.noreply.gitlab.com> Date: Thu, 28 Mar 2013 17:52:04 +0000 Subject: [PATCH] MaskEdit: fix program crash in OnExit of DBEdit, after TDBEdit.UpdateData calls ValidateEdit (issue #0024134). git-svn-id: trunk@40660 - --- lcl/maskedit.pp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lcl/maskedit.pp b/lcl/maskedit.pp index 068711c54e..9aebd7316c 100644 --- a/lcl/maskedit.pp +++ b/lcl/maskedit.pp @@ -1615,14 +1615,16 @@ begin {$IFNDEF MASKEDIT_NOVALIDATEONEXIT} //Do not validate if FValidationFailed, or risk raising an exception while the previous exception was //not handled, resulting in an application crash - if IsMasked and (FTextOnEnter <> Inherited Text) and (not FValidationFailed) then + if IsMasked and (FTextOnEnter <> Inherited Text) then begin //assume failure try //debugln('TCustomMaskedit.DoExit: try ValidateEdit'); - FValidationFailed := True; - ValidateEdit; - FValidationFailed := False; + if (not FValidationFailed) then + begin + ValidateEdit; + FValidationFailed := False; + end ; finally if FValidationFailed then begin @@ -1967,6 +1969,7 @@ begin if not TextIsValid(S) then begin SetCursorPos; + FValidationFailed := True; Raise EDBEditError.Create(SMaskEditNoMatch); end; end;