From 1e8fdf27eff0a19a9d68e24973bc76d8a953654a Mon Sep 17 00:00:00 2001 From: Giampaolo Rodola Date: Tue, 10 Nov 2020 00:39:46 +0100 Subject: [PATCH] [Windows] add support for pypy2 on windows (#1872) --- HISTORY.rst | 8 +++++++- psutil/_psutil_common.c | 17 +++++++++++++---- psutil/arch/windows/wmi.c | 2 ++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 54f2d79f8..8512793ba 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,9 +7,15 @@ XXXX-XX-XX **Enhancements** -- 1875_: `disk_partitions()` exposes 2 extra fields: `maxfile` and `maxpath`, +- 1872_: [Windows] added support for PyPy 2.7. +- 1863_: `disk_partitions()` exposes 2 extra fields: `maxfile` and `maxpath`, which are the maximum file name and path name length. +**Bug fixes** + +- 1866_: [Windows] process exe(), cmdline(), environ() may raise "invalid + access to memory location" on Python 3.9. + 5.7.3 ===== diff --git a/psutil/_psutil_common.c b/psutil/_psutil_common.c index 4178e0c0b..a01919d57 100644 --- a/psutil/_psutil_common.c +++ b/psutil/_psutil_common.c @@ -23,9 +23,8 @@ int PSUTIL_TESTING = 0; // ==================================================================== // PyPy on Windows -#if defined(PSUTIL_WINDOWS) && \ - defined(PYPY_VERSION) && \ - !defined(PyErr_SetFromWindowsErrWithFilename) +#if defined(PSUTIL_WINDOWS) && defined(PYPY_VERSION) +#if !defined(PyErr_SetFromWindowsErrWithFilename) PyObject * PyErr_SetFromWindowsErrWithFilename(int winerr, const char *filename) { PyObject *py_exc = NULL; @@ -58,7 +57,17 @@ PyErr_SetFromWindowsErrWithFilename(int winerr, const char *filename) { Py_XDECREF(py_winerr); return NULL; } -#endif // PYPY on Windows +#endif // !defined(PyErr_SetFromWindowsErrWithFilename) + + +// PyPy 2.7 +#if !defined(PyErr_SetFromWindowsErr) +PyObject * +PyErr_SetFromWindowsErr(int winerr) { + return PyErr_SetFromWindowsErrWithFilename(winerr, ""); +} +#endif // !defined(PyErr_SetFromWindowsErr) +#endif // defined(PSUTIL_WINDOWS) && defined(PYPY_VERSION) // ==================================================================== diff --git a/psutil/arch/windows/wmi.c b/psutil/arch/windows/wmi.c index 0a1fb8913..ec5cdeb51 100644 --- a/psutil/arch/windows/wmi.c +++ b/psutil/arch/windows/wmi.c @@ -10,6 +10,8 @@ #include #include +#include "../../_psutil_common.h" + // We use an exponentially weighted moving average, just like Unix systems do // https://en.wikipedia.org/wiki/Load_(computing)#Unix-style_load_calculation