mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Assert that pgwin32_signal_initialize() has been called early enough.
Before the pgwin32_signal_initialize() call, the backend version of
pg_usleep() has no effect.  No in-tree code falls afoul of that today,
but temporary commit 23078689a9 did so.
Discussion: https://postgr.es/m/20190402135442.GA1173872@rfd.leadboat.com
			
			
This commit is contained in:
		@@ -52,6 +52,7 @@ static BOOL WINAPI pg_console_handler(DWORD dwCtrlType);
 | 
				
			|||||||
void
 | 
					void
 | 
				
			||||||
pg_usleep(long microsec)
 | 
					pg_usleep(long microsec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						Assert(pgwin32_signal_event != NULL);
 | 
				
			||||||
	if (WaitForSingleObject(pgwin32_signal_event,
 | 
						if (WaitForSingleObject(pgwin32_signal_event,
 | 
				
			||||||
							(microsec < 500 ? 1 : (microsec + 500) / 1000))
 | 
												(microsec < 500 ? 1 : (microsec + 500) / 1000))
 | 
				
			||||||
		== WAIT_OBJECT_0)
 | 
							== WAIT_OBJECT_0)
 | 
				
			||||||
@@ -108,6 +109,7 @@ pgwin32_dispatch_queued_signals(void)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	int			exec_mask;
 | 
						int			exec_mask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Assert(pgwin32_signal_event != NULL);
 | 
				
			||||||
	EnterCriticalSection(&pg_signal_crit_sec);
 | 
						EnterCriticalSection(&pg_signal_crit_sec);
 | 
				
			||||||
	while ((exec_mask = UNBLOCKED_SIGNAL_QUEUE()) != 0)
 | 
						while ((exec_mask = UNBLOCKED_SIGNAL_QUEUE()) != 0)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -209,6 +211,7 @@ pgwin32_create_signal_listener(pid_t pid)
 | 
				
			|||||||
void
 | 
					void
 | 
				
			||||||
pg_queue_signal(int signum)
 | 
					pg_queue_signal(int signum)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						Assert(pgwin32_signal_event != NULL);
 | 
				
			||||||
	if (signum >= PG_SIGNAL_COUNT || signum <= 0)
 | 
						if (signum >= PG_SIGNAL_COUNT || signum <= 0)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,9 @@ pgwin32_open(const char *fileName, int fileFlags,...)
 | 
				
			|||||||
						 (O_RANDOM | O_SEQUENTIAL | O_TEMPORARY) |
 | 
											 (O_RANDOM | O_SEQUENTIAL | O_TEMPORARY) |
 | 
				
			||||||
						 _O_SHORT_LIVED | O_DSYNC | O_DIRECT |
 | 
											 _O_SHORT_LIVED | O_DSYNC | O_DIRECT |
 | 
				
			||||||
						 (O_CREAT | O_TRUNC | O_EXCL) | (O_TEXT | O_BINARY))) == fileFlags);
 | 
											 (O_CREAT | O_TRUNC | O_EXCL) | (O_TEXT | O_BINARY))) == fileFlags);
 | 
				
			||||||
 | 
					#ifndef FRONTEND
 | 
				
			||||||
 | 
						Assert(pgwin32_signal_event != NULL);	/* small chance of pg_usleep() */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef FRONTEND
 | 
					#ifdef FRONTEND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user