From cb649c8f7877b631b77644411746f9e809bf856e Mon Sep 17 00:00:00 2001 From: Diogo Aires Date: Fri, 21 Mar 2025 11:58:27 -0300 Subject: [PATCH] Adjust on release instances when is object singleton and interfaced --- Quick.IOC.pas | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Quick.IOC.pas b/Quick.IOC.pas index 663e180..9c5310f 100644 --- a/Quick.IOC.pas +++ b/Quick.IOC.pas @@ -467,9 +467,15 @@ destructor TIocRegistrator.Destroy; if fDependencyOrder[i] <> nil then begin //free singleton instances not interfaced - if (fDependencyOrder[i] is TIocRegistrationInstance) and - (TIocRegistrationInstance(fDependencyOrder[i]).IsSingleton) then - TIocRegistrationInstance(fDependencyOrder[i]).Instance.Free; + if (fDependencyOrder[i] is TIocRegistrationInstance) and + (TIocRegistrationInstance(fDependencyOrder[i]).IsSingleton) then + TIocRegistrationInstance(fDependencyOrder[i]).Instance.Free + else + //free singleton instances interfaced + if (fDependencyOrder[i] is TIocRegistrationInterface) and + (TIocRegistrationInterface(fDependencyOrder[i]).IsSingleton) and + (Assigned(TIocRegistrationInterface(fDependencyOrder[i]).Instance)) then + TIocRegistrationInterface(fDependencyOrder[i]).Instance._Release; fDependencyOrder[i].Free; end; end;