diff --git a/src/backend/storage/ipc/dsm_impl.c b/src/backend/storage/ipc/dsm_impl.c
index b1519c9..5424787 100644
--- a/src/backend/storage/ipc/dsm_impl.c
+++ b/src/backend/storage/ipc/dsm_impl.c
@@ -705,22 +705,29 @@ dsm_impl_windows(dsm_op op, dsm_handle handle, Size request_size,
 			CloseHandle(hmap);
 			return false;
 		}
+		if (!hmap)
+		{
+			ereport(elevel,
+					(errcode_for_dynamic_shared_memory(),
+					 errmsg("could not create shared memory segment \"%s\": %m",
+							name)));
+			return false;
+		}
 	}
 	else
 	{
 		hmap = OpenFileMapping(FILE_MAP_WRITE | FILE_MAP_READ,
 							   FALSE,		/* do not inherit the name */
 							   name);		/* name of mapping object */
-		_dosmaperr(GetLastError());
-	}
-
-	if (!hmap)
-	{
-		ereport(elevel,
-				(errcode_for_dynamic_shared_memory(),
-				 errmsg("could not open shared memory segment \"%s\": %m",
-					name)));
-		return false;
+		if (!hmap)
+		{
+			_dosmaperr(GetLastError());
+			ereport(elevel,
+					(errcode_for_dynamic_shared_memory(),
+					 errmsg("could not open shared memory segment \"%s\": %m",
+							name)));
+			return false;
+		}
 	}
 
 	/* Map it. */
