summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorMax Bachmann <kontakt@maxbachmann.de>2023-02-24 12:38:21 (GMT)
committerGitHub <noreply@github.com>2023-02-24 12:38:21 (GMT)
commit1fa38906f0b228e6b0a6baa89ab6316989b0388a (patch)
tree6b22b15ea33f2f31b5bcbbc0bb4011e087f3b3f0 /Modules
parent347f7406df62b2bbe551685d72a466f27b951f8e (diff)
downloadcpython-1fa38906f0b228e6b0a6baa89ab6316989b0388a.zip
cpython-1fa38906f0b228e6b0a6baa89ab6316989b0388a.tar.gz
cpython-1fa38906f0b228e6b0a6baa89ab6316989b0388a.tar.bz2
gh-102141: replace use of getpid on Windows with GetCurrentProcessId (GH-102142)
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_randommodule.c4
-rw-r--r--Modules/posixmodule.c15
2 files changed, 12 insertions, 7 deletions
diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c
index 95f1e50..68060c0 100644
--- a/Modules/_randommodule.c
+++ b/Modules/_randommodule.c
@@ -259,7 +259,9 @@ random_seed_time_pid(RandomObject *self)
key[0] = (uint32_t)(now & 0xffffffffU);
key[1] = (uint32_t)(now >> 32);
-#ifdef HAVE_GETPID
+#ifdef MS_WINDOWS_NON_DESKTOP
+ key[2] = (uint32_t)GetCurrentProcessId();
+#elif defined(HAVE_GETPID)
key[2] = (uint32_t)getpid();
#else
key[2] = 0;
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 524dc7e..51aa89e 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -7946,7 +7946,7 @@ os_getgid_impl(PyObject *module)
#endif /* HAVE_GETGID */
-#ifdef HAVE_GETPID
+#if defined(HAVE_GETPID)
/*[clinic input]
os.getpid
@@ -7957,9 +7957,13 @@ static PyObject *
os_getpid_impl(PyObject *module)
/*[clinic end generated code: output=9ea6fdac01ed2b3c input=5a9a00f0ab68aa00]*/
{
+#ifdef MS_WINDOWS_NON_DESKTOP
+ return PyLong_FromUnsignedLong(GetCurrentProcessId());
+#else
return PyLong_FromPid(getpid());
+#endif
}
-#endif /* HAVE_GETPID */
+#endif /* defined(HAVE_GETPID) */
#ifdef NGROUPS_MAX
#define MAX_GROUPS NGROUPS_MAX
@@ -8265,12 +8269,11 @@ static PyObject*
win32_getppid()
{
HANDLE snapshot;
- pid_t mypid;
PyObject* result = NULL;
BOOL have_record;
PROCESSENTRY32 pe;
- mypid = getpid(); /* This function never fails */
+ DWORD mypid = GetCurrentProcessId(); /* This function never fails */
snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (snapshot == INVALID_HANDLE_VALUE)
@@ -8279,9 +8282,9 @@ win32_getppid()
pe.dwSize = sizeof(pe);
have_record = Process32First(snapshot, &pe);
while (have_record) {
- if (mypid == (pid_t)pe.th32ProcessID) {
+ if (mypid == pe.th32ProcessID) {
/* We could cache the ulong value in a static variable. */
- result = PyLong_FromPid((pid_t)pe.th32ParentProcessID);
+ result = PyLong_FromUnsignedLong(pe.th32ParentProcessID);
break;
}