소스 검색

Fix AV in IOC for Singleton non-interfaced class

A non-interfaced class registered in the IOC as Singleton, was raising an AV when the container was freed
jkour 2 년 전
부모
커밋
2bb48614b9
2개의 변경된 파일69개의 추가작업 그리고 15개의 파일을 삭제
  1. 3 1
      Quick.IOC.pas
  2. 66 14
      samples/delphi/QuickIOC/IOCdemo.dproj

+ 3 - 1
Quick.IOC.pas

@@ -442,7 +442,9 @@ begin
     if fDependencyOrder[i] <> nil then
     if fDependencyOrder[i] <> nil then
     begin
     begin
       //free singleton instances not interfaced
       //free singleton instances not interfaced
-      if (fDependencyOrder[i] is TIocRegistrationInstance) and (TIocRegistrationInstance(fDependencyOrder[i]).IsSingleton) then TIocRegistrationInstance(regs[i]).Instance.Free;
+      if (fDependencyOrder[i] is TIocRegistrationInstance) and
+          (TIocRegistrationInstance(fDependencyOrder[i]).IsSingleton) then
+            TIocRegistrationInstance(fDependencyOrder[i]).Instance.Free;
       fDependencyOrder[i].Free;
       fDependencyOrder[i].Free;
     end;
     end;
   end;
   end;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 66 - 14
samples/delphi/QuickIOC/IOCdemo.dproj


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.