瀏覽代碼

AThreads: prevent deadlock for event set before waited

Marcus Sackrow 3 年之前
父節點
當前提交
638de87a5a
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      rtl/amicommon/athreads.pp

+ 2 - 0
rtl/amicommon/athreads.pp

@@ -1133,6 +1133,7 @@ begin
       {$IFDEF DEBUG_AMIEVENT}
       SysDebugLn('AmiEvent: WaitFor Early Destroy');
       {$ENDIF}
+      ReleaseSemaphore(@AmiEvent^.Sem);
       Exit;
     end;
     if AmiEvent^.IsSet then
@@ -1143,6 +1144,7 @@ begin
       {$IFDEF DEBUG_AMIEVENT}
       SysDebugLn('AmiEvent: WaitFor Early Signaled');
       {$ENDIF}
+      ReleaseSemaphore(@AmiEvent^.Sem);
       Exit;
     end;
     // signal not set, so we add this call to the waiterlist