mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-04 21:37:21 +02:00
Don't trust CreateFileMapping() to clear the error code on success.
We must test GetLastError() even when CreateFileMapping() returns a non-null handle. If that value were left over from some previous system call, we might be fooled into thinking the segment already existed. Experimentation on Windows 7 suggests that CreateFileMapping() clears the error code on success, but it is not documented to do so, so let's not rely on that happening in all Windows releases. Amit Kapila Discussion: <20811.1474390987@sss.pgh.pa.us>
This commit is contained in:
parent
93528f7b41
commit
eda5e90829
@ -681,6 +681,9 @@ dsm_impl_windows(dsm_op op, dsm_handle handle, Size request_size,
|
|||||||
#endif
|
#endif
|
||||||
size_low = (DWORD) request_size;
|
size_low = (DWORD) request_size;
|
||||||
|
|
||||||
|
/* CreateFileMapping might not clear the error code on success */
|
||||||
|
SetLastError(0);
|
||||||
|
|
||||||
hmap = CreateFileMapping(INVALID_HANDLE_VALUE, /* Use the pagefile */
|
hmap = CreateFileMapping(INVALID_HANDLE_VALUE, /* Use the pagefile */
|
||||||
NULL, /* Default security attrs */
|
NULL, /* Default security attrs */
|
||||||
PAGE_READWRITE, /* Memory is read/write */
|
PAGE_READWRITE, /* Memory is read/write */
|
||||||
|
Loading…
Reference in New Issue
Block a user