| --- 000/win32/src/win32apimodule.cpp 2019-07-18 09:05:08.224088200 +0300 |
| +++ 001/win32/src/win32apimodule.cpp 2018-09-28 09:32:03.000000000 +0300 |
| @@ -707,7 +707,7 @@ static PyObject *PyFindCloseChangeNotification(PyObject *self, PyObject *args) |
| } |
| |
| // @pymethod string|win32api|FormatMessage|Returns an error message from the system error file. |
| -static PyObject *PyFormatMessageA(PyObject *self, PyObject *args) |
| +__attribute__((optimize("O0"), noinline)) static PyObject *PyFormatMessageA(PyObject *self, PyObject *args) |
| { |
| int errCode = 0; |
| // @pyparm int|errCode|0|The error code to return the message for, If this value is 0, then GetLastError() is |
| @@ -795,6 +795,7 @@ static PyObject *PyFormatMessageA(PyObject *self, PyObject *args) |
| { |
| baccessviolation = TRUE; |
| } |
| + __except_end |
| PyW32_END_ALLOW_THREADS |
| } |
| |
| @@ -819,7 +818,7 @@ cleanup: |
| } |
| |
| // @pymethod <o PyUnicode>|win32api|FormatMessageW|Returns an error message from the system error file. |
| -static PyObject *PyFormatMessageW(PyObject *self, PyObject *args) |
| +__attribute__((optimize("O0"), noinline)) static PyObject *PyFormatMessageW(PyObject *self, PyObject *args) |
| { |
| int errCode = 0; |
| // Accept just the error code |
| @@ -902,6 +913,7 @@ static PyObject *PyFormatMessageW(PyObject *self, PyObject *args) |
| { |
| baccessviolation = TRUE; |
| } |
| + __except_end |
| PyW32_END_ALLOW_THREADS |
| } |
| |
| @@ -5555,7 +5553,7 @@ static PyObject *PyApply(PyObject *self, PyObject *args) |
| Py_XDECREF(exc_type); |
| Py_XDECREF(exc_value); |
| ret = NULL; |
| - } |
| + } __except_end |
| return ret; |
| // @comm Calls the specified function in a manner similar to |
| // the built-in function apply(), but allows Win32 exceptions |
| --- 000/com/win32com/src/include/PythonCOM.h 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32com/src/include/PythonCOM.h 2020-06-20 13:10:05.609363700 +0300 |
| @@ -111,8 +111,6 @@ |
| #ifdef __MINGW32__ |
| // Special Mingw32 considerations. |
| #define NO_PYCOM_ENUMSTATPROPSTG |
| -#define __try try |
| -#define __except catch |
| #include <olectl.h> |
| |
| #endif // __MINGW32__ |
| --- 000/com/win32comext/mapi/src/mapi.i 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/mapi/src/mapi.i 2020-06-20 13:10:05.609363700 +0300 |
| @@ -129,6 +129,7 @@ |
| PyWin_SetAPIError("MAPIUninitialize", ERROR_INVALID_HANDLE); |
| rc = NULL; |
| } |
| + __except_end |
| return rc; |
| } |
| |
| --- 000/com/win32comext/shell/src/shell.cpp 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/shell/src/shell.cpp 2020-06-20 14:15:11.188333200 +0300 |
| @@ -258,16 +258,13 @@ |
| pidl = _ILNext(pidl); |
| } |
| } |
| -#if defined(__MINGW32__) || defined(MAINWIN) |
| - catch (...) |
| -#else |
| __except (EXCEPTION_EXECUTE_HANDLER) |
| -#endif |
| { |
| Py_DECREF(ret); |
| PyErr_SetString(PyExc_ValueError, "This string is an invalid PIDL (win32 exception unpacking)"); |
| ret = NULL; |
| } |
| + __except_end |
| if (bFreeSystemPIDL) |
| CoTaskMemFree((void *)pidl_free); |
| return ret; |