Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2fe0f29

Browse files
committed
Minor improvement: avoid assuming that GetLastError value cannot be
affected by CloseHandle() or Sleep().
1 parent1bbbcb0 commit2fe0f29

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

‎src/backend/port/win32_shmem.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.9 2009/05/0509:48:51 mha Exp $
9+
* $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.10 2009/05/0521:51:46 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -158,23 +158,24 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port)
158158

159159
/*
160160
* If the segment already existed, CreateFileMapping() will return a
161-
* handle to the existing one.
161+
* handle to the existing one and set ERROR_ALREADY_EXISTS.
162162
*/
163163
if (GetLastError()==ERROR_ALREADY_EXISTS)
164164
{
165-
CloseHandle(hmap);/* Close theoldhandle, since we got a valid
165+
CloseHandle(hmap);/* Close the handle, since we got a valid
166166
* one to the previous segment. */
167+
hmap=NULL;
167168
Sleep(1000);
168169
continue;
169170
}
170171
break;
171172
}
172173

173174
/*
174-
* If the last call in the loop still returned ERROR_ALREADY_EXISTS, this shared memory
175-
* segment exists and we assume it belongs to somebody else.
175+
* If the last call in the loop still returned ERROR_ALREADY_EXISTS, this
176+
*shared memorysegment exists and we assume it belongs to somebody else.
176177
*/
177-
if (GetLastError()==ERROR_ALREADY_EXISTS)
178+
if (!hmap)
178179
ereport(FATAL,
179180
(errmsg("pre-existing shared memory block is still in use"),
180181
errhint("Check if there are any old server processes still running, and terminate them.")));

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp