mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Kernel: Corrections to Wait Objects clearing in which a thread could still be signalled after a timeout or a cancel.
This commit is contained in:
		
							parent
							
								
									27d571c084
								
							
						
					
					
						commit
						1c6a11ab14
					
				| @ -133,6 +133,7 @@ void Thread::ResumeFromWait() { | |||||||
| 
 | 
 | ||||||
| void Thread::CancelWait() { | void Thread::CancelWait() { | ||||||
|     ASSERT(GetStatus() == ThreadStatus::WaitSynch); |     ASSERT(GetStatus() == ThreadStatus::WaitSynch); | ||||||
|  |     ClearWaitObjects(); | ||||||
|     SetWaitSynchronizationResult(ERR_SYNCHRONIZATION_CANCELED); |     SetWaitSynchronizationResult(ERR_SYNCHRONIZATION_CANCELED); | ||||||
|     ResumeFromWait(); |     ResumeFromWait(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -319,6 +319,9 @@ public: | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void ClearWaitObjects() { |     void ClearWaitObjects() { | ||||||
|  |         for (const auto& waiting_object : wait_objects) { | ||||||
|  |             waiting_object->RemoveWaitingThread(this); | ||||||
|  |         } | ||||||
|         wait_objects.clear(); |         wait_objects.clear(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -85,9 +85,6 @@ void WaitObject::WakeupWaitingThread(SharedPtr<Thread> thread) { | |||||||
| 
 | 
 | ||||||
|     const std::size_t index = thread->GetWaitObjectIndex(this); |     const std::size_t index = thread->GetWaitObjectIndex(this); | ||||||
| 
 | 
 | ||||||
|     for (const auto& object : thread->GetWaitObjects()) { |  | ||||||
|         object->RemoveWaitingThread(thread.get()); |  | ||||||
|     } |  | ||||||
|     thread->ClearWaitObjects(); |     thread->ClearWaitObjects(); | ||||||
| 
 | 
 | ||||||
|     thread->CancelWakeupTimer(); |     thread->CancelWakeupTimer(); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Fernando Sahmkow
						Fernando Sahmkow