Commit ab9ed9be authored by Noah Misch's avatar Noah Misch

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 23078689 did so.

Discussion: https://postgr.es/m/20190402135442.GA1173872@rfd.leadboat.com
parent f433394e
...@@ -52,6 +52,7 @@ static BOOL WINAPI pg_console_handler(DWORD dwCtrlType); ...@@ -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) ...@@ -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) ...@@ -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,...) ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment