MINGW-packages/mingw-w64-python-pywin32/003-win32-extensions-fix.patch
2023-04-08 05:16:27 +08:00

1115 lines
43 KiB
Diff

diff -urN pywin32-b306-orig/win32/src/PerfMon/PyPerfMon.cpp pywin32-b306/win32/src/PerfMon/PyPerfMon.cpp
--- pywin32-b306-orig/win32/src/PerfMon/PyPerfMon.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PerfMon/PyPerfMon.cpp 2023-04-07 09:30:09.612441600 +0800
@@ -13,7 +13,7 @@
******************************************************************/
#include "PyWinTypes.h"
-#include "Pyperfmon.h"
+#include "pyperfmon.h"
#include "tchar.h"
extern PyObject *PerfmonMethod_NewPERF_COUNTER_DEFINITION(PyObject *self, PyObject *args);
diff -urN pywin32-b306-orig/win32/src/PerfMon/PyPerfMonControl.h pywin32-b306/win32/src/PerfMon/PyPerfMonControl.h
--- pywin32-b306-orig/win32/src/PerfMon/PyPerfMonControl.h 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PerfMon/PyPerfMonControl.h 2023-04-07 09:30:09.624439400 +0800
@@ -18,6 +18,6 @@
DWORD ControlSize; // Size of this structure.
DWORD TotalSize; // Total Size allocated in the mapped file.
SupplierStatus supplierStatus;
- WCHAR ServiceName[MMCD_SERVICE_SIZE]; // The name of the service or application.
- WCHAR EventSourceName[MMCD_EVENTSOURCE_SIZE]; // Source Name that appears in Event Log for errors.
+ WCHAR ServiceName[MMCD_SERVICE_SIZE+1]; // The name of the service or application.
+ WCHAR EventSourceName[MMCD_EVENTSOURCE_SIZE+1]; // Source Name that appears in Event Log for errors.
};
diff -urN pywin32-b306-orig/win32/src/PerfMon/PyPerfMsgs.mc pywin32-b306/win32/src/PerfMon/PyPerfMsgs.mc
--- pywin32-b306-orig/win32/src/PerfMon/PyPerfMsgs.mc 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PerfMon/PyPerfMsgs.mc 2023-04-07 09:30:09.634400100 +0800
@@ -86,3 +86,4 @@
.
;//
;#endif // _PYPERFMSG_H_
+
diff -urN pywin32-b306-orig/win32/src/PyHANDLE.cpp pywin32-b306/win32/src/PyHANDLE.cpp
--- pywin32-b306-orig/win32/src/PyHANDLE.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PyHANDLE.cpp 2023-04-07 09:30:30.398988500 +0800
@@ -129,7 +129,11 @@
PyHANDLE::binaryFailureFunc, /* nb_xor */
PyHANDLE::binaryFailureFunc, /* nb_or */
PyHANDLE::intFunc, /* nb_int */
+#if (PY_VERSION_HEX < 0x03000000)
PyHANDLE::longFunc, /* nb_long */
+#else
+ 0,
+#endif
PyHANDLE::unaryFailureFunc, /* nb_float */
// These removed in 3.0
};
diff -urN pywin32-b306-orig/win32/src/PyWinTypes.h pywin32-b306/win32/src/PyWinTypes.h
--- pywin32-b306-orig/win32/src/PyWinTypes.h 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PyWinTypes.h 2023-04-07 09:30:41.318120800 +0800
@@ -18,6 +18,18 @@
#include "structmember.h"
#include "windows.h"
+#ifndef _MSC_VER
+#define min(x,y) (((x) < (y)) ? (x) : (y))
+#define max(x,y) (((x) > (y)) ? (x) : (y))
+
+#ifndef __try
+#define __try try
+#endif
+#ifndef __except
+#define __except(filter) catch(...)
+#endif
+#endif
+
// Helpers for our modules.
// Some macros to help the pywin32 modules co-exist in py2x and py3k.
// Creates and initializes local variables called 'module' and 'dict'.
diff -urN pywin32-b306-orig/win32/src/PyWinTypesmodule.cpp pywin32-b306/win32/src/PyWinTypesmodule.cpp
--- pywin32-b306-orig/win32/src/PyWinTypesmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PyWinTypesmodule.cpp 2023-04-07 09:30:41.350131400 +0800
@@ -1087,11 +1087,17 @@
}
// Function to format a python traceback into a character string.
+#ifdef _MSC_VER
#define GPEM_ERROR(what) \
{ \
errorMsg = L"<Error getting traceback - "##what##">"; \
- goto done; \
}
+#else
+#define GPEM_ERROR(what) \
+ { \
+ errorMsg = L"<Error getting traceback - " what ">"; \
+ }
+#endif
PYWINTYPES_EXPORT WCHAR *GetPythonTraceback(PyObject *exc_type, PyObject *exc_value, PyObject *exc_tb)
{
WCHAR *result = NULL;
@@ -1110,22 +1116,27 @@
if (modStringIO == NULL)
GPEM_ERROR("cant import cStringIO");
+ Py_XDECREF(modStringIO);
modTB = PyImport_ImportModule("traceback");
if (modTB == NULL)
GPEM_ERROR("cant import traceback");
+ Py_XDECREF(modTB);
/* Construct a cStringIO object */
obFuncStringIO = PyObject_GetAttrString(modStringIO, "StringIO");
if (obFuncStringIO == NULL)
GPEM_ERROR("cant find cStringIO.StringIO");
+ Py_XDECREF(obFuncStringIO);
obStringIO = PyObject_CallObject(obFuncStringIO, NULL);
if (obStringIO == NULL)
GPEM_ERROR("cStringIO.StringIO() failed");
+ Py_XDECREF(obStringIO);
/* Get the traceback.print_exception function, and call it. */
obFuncTB = PyObject_GetAttrString(modTB, "print_exception");
if (obFuncTB == NULL)
GPEM_ERROR("cant find traceback.print_exception");
+ Py_XDECREF(obFuncTB);
// Py3k has added an undocumented 'chain' argument which defaults to True
// and causes all kinds of exceptions while trying to print a traceback!
// This *could* be useful thought if we can tame it - later!
@@ -1140,6 +1151,7 @@
);
if (argsTB == NULL)
GPEM_ERROR("cant make print_exception arguments");
+ Py_XDECREF(argsTB);
obResult = PyObject_CallObject(obFuncTB, argsTB);
if (obResult == NULL) {
@@ -1150,32 +1162,27 @@
// PyUnicodeObject *uo=(PyUnicodeObject *)v;
// DebugBreak();
GPEM_ERROR("traceback.print_exception() failed");
+ Py_XDECREF(obResult);
}
/* Now call the getvalue() method in the StringIO instance */
Py_DECREF(obFuncStringIO);
obFuncStringIO = PyObject_GetAttrString(obStringIO, "getvalue");
if (obFuncStringIO == NULL)
GPEM_ERROR("cant find getvalue function");
+ Py_XDECREF(obFuncStringIO);
Py_DECREF(obResult);
obResult = PyObject_CallObject(obFuncStringIO, NULL);
if (obResult == NULL)
GPEM_ERROR("getvalue() failed.");
+ Py_XDECREF(obResult);
/* And it should be a string all ready to go - duplicate it. */
if (PyWinObject_AsWCHAR(obResult, &resultPtr, FALSE))
result = wcsdup(resultPtr);
else
GPEM_ERROR("getvalue() did not return a string");
+ if (result == NULL && errorMsg != NULL)
+ result = wcsdup(errorMsg);
-done:
- if (result == NULL && errorMsg != NULL)
- result = wcsdup(errorMsg);
- Py_XDECREF(modStringIO);
- Py_XDECREF(modTB);
- Py_XDECREF(obFuncStringIO);
- Py_XDECREF(obStringIO);
- Py_XDECREF(obFuncTB);
- Py_XDECREF(argsTB);
- Py_XDECREF(obResult);
return result;
}
diff -urN pywin32-b306-orig/win32/src/PythonService.cpp pywin32-b306/win32/src/PythonService.cpp
--- pywin32-b306-orig/win32/src/PythonService.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PythonService.cpp 2023-04-07 09:30:41.385168300 +0800
@@ -1302,7 +1302,7 @@
TCHAR cvtBuf[20];
wsprintf(cvtBuf, L"%d", errCode);
- LPTSTR lpszStrings[] = {cvtBuf, buf, L'\0'};
+ LPTSTR lpszStrings[] = {cvtBuf, buf, L"\0"};
ReportError(msgCode, (LPCTSTR *)lpszStrings);
}
diff -urN pywin32-b306-orig/win32/src/PythonServiceMessages.mc pywin32-b306/win32/src/PythonServiceMessages.mc
--- pywin32-b306-orig/win32/src/PythonServiceMessages.mc 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/PythonServiceMessages.mc 2023-04-07 09:30:41.428148900 +0800
@@ -137,7 +137,7 @@
Severity=Error
SymbolicName=E_UNUSED2
Language=English
-
+Unknown error.
.
MessageId=0x8
diff -urN pywin32-b306-orig/win32/src/_winxptheme.i pywin32-b306/win32/src/_winxptheme.i
--- pywin32-b306-orig/win32/src/_winxptheme.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/_winxptheme.i 2023-04-07 09:30:41.443119100 +0800
@@ -15,12 +15,14 @@
%include "pywintypes.i"
%{
+#undef _WIN32_IE
#define _WIN32_IE 0x0501 // to enable balloon notifications in Shell_NotifyIcon
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
//#define ISOLATION_AWARE_ENABLED 1
#undef PyHANDLE
-#include "pywinobjects.h"
+#include "PyWinObjects.h"
#include "windows.h"
#include "Uxtheme.h"
#include "commctrl.h"
@@ -93,6 +95,8 @@
return NULL;
}
+%typedef RECT RECT;
+
%typemap(python,ignore) RECT *OUTPUT(RECT temp)
{
$target = &temp;
diff -urN pywin32-b306-orig/win32/src/mmapfilemodule.cpp pywin32-b306/win32/src/mmapfilemodule.cpp
--- pywin32-b306-orig/win32/src/mmapfilemodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/mmapfilemodule.cpp 2023-04-07 09:30:41.474125500 +0800
@@ -71,7 +71,7 @@
{
char *where = (self->data + self->pos);
CHECK_VALID;
- if ((where >= 0) && (where < (self->data + self->size))) {
+ if (((INT_PTR)where >= 0) && (where < (self->data + self->size))) {
PyObject *ret = PyBytes_FromStringAndSize(where, 1);
if (ret)
self->pos += 1;
diff -urN pywin32-b306-orig/win32/src/odbc.cpp pywin32-b306/win32/src/odbc.cpp
--- pywin32-b306-orig/win32/src/odbc.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/odbc.cpp 2023-04-07 09:30:41.500137000 +0800
@@ -93,8 +93,8 @@
static cursorObject *cursor(PyObject *o) { return (cursorObject *)o; }
static void cursorDealloc(PyObject *self);
-PyMethodDef cursorMethods[];
-PyMemberDef cursorMembers[];
+extern PyMethodDef cursorMethods[];
+extern PyMemberDef cursorMembers[];
static PyTypeObject Cursor_Type = {
PYWIN_OBJECT_HEAD "odbccur", /*tp_name */
@@ -137,8 +137,8 @@
};
static void connectionDealloc(PyObject *self);
-PyMethodDef connectionMethods[];
-PyMemberDef connectionMembers[];
+extern PyMethodDef connectionMethods[];
+extern PyMemberDef connectionMembers[];
static PyTypeObject Connection_Type = {
PYWIN_OBJECT_HEAD "odbcconn", /*tp_name */
sizeof(connectionObject), /*tp_basicsize */
@@ -379,7 +379,7 @@
}
/* @object connection|An object representing an ODBC connection */
-static struct PyMethodDef connectionMethods[] = {
+struct PyMethodDef connectionMethods[] = {
{"setautocommit", odbcSetAutoCommit, 1}, /* @pymeth setautocommit|Sets the autocommit mode. */
{"commit", odbcCommit, 1}, /* @pymeth commit|Commits a transaction. */
{"rollback", odbcRollback, 1}, /* @pymeth rollback|Rollsback a transaction. */
@@ -387,7 +387,7 @@
{"close", odbcClose, 1}, /* @pymeth close|Closes the connection. */
{0, 0}};
-static PyMemberDef connectionMembers[] = {{"error", T_OBJECT, offsetof(connectionObject, connectionError), READONLY},
+struct PyMemberDef connectionMembers[] = {{"error", T_OBJECT, offsetof(connectionObject, connectionError), READONLY},
{NULL}};
static void connectionDealloc(PyObject *self)
@@ -1418,7 +1418,7 @@
}
/* @object cursor|An object representing an ODBC cursor. */
-static PyMethodDef cursorMethods[] = {
+struct PyMethodDef cursorMethods[] = {
{"close", odbcCurClose, 1}, /* @pymeth close|Closes the cursor */
{"execute", odbcCurExec, 1}, /* @pymeth execute|Execute some SQL */
{"fetchone", odbcCurFetchOne, 1}, /* @pymeth fetchone|Fetch one row of data */
@@ -1428,7 +1428,7 @@
{"setoutputsize", odbcCurSetOutputSize, 1}, /* @pymeth setoutputsize| */
{0, 0}};
-static PyMemberDef cursorMembers[] = {{"description", T_OBJECT, offsetof(cursorObject, description), READONLY},
+struct PyMemberDef cursorMembers[] = {{"description", T_OBJECT, offsetof(cursorObject, description), READONLY},
{"error", T_OBJECT, offsetof(cursorObject, cursorError), READONLY},
{NULL}};
@@ -1448,13 +1448,25 @@
if (!firstEqualsSign || (firstSlash && firstSlash < firstEqualsSign)) {
_tcsncpy(buf, c, sizeof(buf) / sizeof(TCHAR));
+#ifdef _UCRT
+ p = _tcstok(buf, _T("/"), 0);
+#else
p = _tcstok(buf, _T("/"));
+#endif
if (p) {
_tcsncpy(dsn, p, sizeof(dsn) / sizeof(TCHAR));
+#ifdef _UCRT
+ p = _tcstok(buf, _T("/"), 0);
+#else
p = _tcstok(0, _T("/"));
+#endif
if (p) {
_tcsncpy(uid, p, sizeof(uid) / sizeof(TCHAR));
+#ifdef _UCRT
+ p = _tcstok(buf, _T("/"), 0);
+#else
p = _tcstok(0, _T("/"));
+#endif
if (p) {
_tcsncpy(pwd, p, sizeof(pwd) / sizeof(TCHAR));
}
diff -urN pywin32-b306-orig/win32/src/timermodule.cpp pywin32-b306/win32/src/timermodule.cpp
--- pywin32-b306-orig/win32/src/timermodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/timermodule.cpp 2023-04-07 09:30:41.513120500 +0800
@@ -8,7 +8,7 @@
// @doc - Contains autoduck comments for documentation
-#include "pywintypes.h"
+#include "PyWinTypes.h"
//#include "abstract.h"
static PyObject *timer_id_callback_map = NULL;
diff -urN pywin32-b306-orig/win32/src/win32apimodule.cpp pywin32-b306/win32/src/win32apimodule.cpp
--- pywin32-b306-orig/win32/src/win32apimodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32apimodule.cpp 2023-04-07 09:30:41.555130500 +0800
@@ -528,7 +528,7 @@
if (rc == (HINSTANCE)31)
PyErr_SetString(PyWinExc_ApiError, "FindExecutable: There is no association for the file");
else
- PyWin_SetAPIError("FindExecutable", (int)rc);
+ PyWin_SetAPIError("FindExecutable", (INT_PTR)rc);
}
else ret = Py_BuildValue("(NN)", PyWinLong_FromHANDLE(rc), PyWinObject_FromTCHAR(res));
}
@@ -1173,7 +1173,7 @@
if (!PyWinObject_AsResourceId(obid, &id))
return NULL;
// @pyseeapi LoadCursor
- PyW32_BEGIN_ALLOW_THREADS HCURSOR ret = ::LoadCursor(hInstance, MAKEINTRESOURCE(id));
+ PyW32_BEGIN_ALLOW_THREADS HCURSOR ret = ::LoadCursor(hInstance, MAKEINTRESOURCE((ULONG_PTR)id));
PyW32_END_ALLOW_THREADS PyWinObject_FreeResourceId(id);
if (ret == NULL)
ReturnAPIError("LoadCursor");
@@ -1780,7 +1780,7 @@
if (proc == NULL)
return ReturnAPIError("GetProcAddress");
// @pyseeapi GetProcAddress
- return PyWinLong_FromVoidPtr(proc);
+ return PyWinLong_FromVoidPtr((PVOID)proc);
}
// @pymethod <o PyUnicode>|win32api|GetDllDirectory|Returns the DLL search path
@@ -4298,7 +4298,7 @@
PyW32_BEGIN_ALLOW_THREADS HINSTANCE rc = ::ShellExecute(hwnd, op, file, params, dir, show);
PyW32_END_ALLOW_THREADS
// @pyseeapi ShellExecute
- if (rc <= (HINSTANCE)32) PyWin_SetAPIError("ShellExecute", (int)rc);
+ if (rc <= (HINSTANCE)32) PyWin_SetAPIError("ShellExecute", (INT_PTR)rc);
else ret = PyWinLong_FromVoidPtr(rc);
}
PyWinObject_FreeTCHAR(op);
@@ -5277,8 +5277,8 @@
}
PyThreadState *stateSave = PyThreadState_Swap(NULL);
PyThreadState_Swap(stateSave);
- _try { ret = PyObject_CallObject(obFunc, obArgs); }
- _except(PyApplyExceptionFilter(GetExceptionCode(), GetExceptionInformation(), obHandler, &exc_type, &exc_value))
+ __try { ret = PyObject_CallObject(obFunc, obArgs); }
+ __except(PyApplyExceptionFilter(GetExceptionCode(), GetExceptionInformation(), obHandler, &exc_type, &exc_value))
{
// Do my best to restore the thread state to a sane spot.
PyThreadState *stateCur = PyThreadState_Swap(NULL);
diff -urN pywin32-b306-orig/win32/src/win32clipboardmodule.cpp pywin32-b306/win32/src/win32clipboardmodule.cpp
--- pywin32-b306-orig/win32/src/win32clipboardmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32clipboardmodule.cpp 2023-04-07 09:30:41.580132800 +0800
@@ -15,7 +15,7 @@
#define PY_SSIZE_T_CLEAN // this should be Py_ssize_t clean!
-#include "pywintypes.h"
+#include "PyWinTypes.h"
#define CHECK_NO_ARGS2(args, fnName) \
do { \
@@ -1098,12 +1098,11 @@
{NULL, NULL}};
#define ADD_CONSTANT(tok) \
- if (rc = PyModule_AddIntConstant(module, #tok, tok)) \
+ if (int rc = PyModule_AddIntConstant(module, #tok, tok)) \
return rc
static int AddConstants(PyObject *module)
{
- int rc;
ADD_CONSTANT(CF_TEXT);
ADD_CONSTANT(CF_BITMAP);
ADD_CONSTANT(CF_METAFILEPICT);
diff -urN pywin32-b306-orig/win32/src/win32consolemodule.cpp pywin32-b306/win32/src/win32consolemodule.cpp
--- pywin32-b306-orig/win32/src/win32consolemodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32consolemodule.cpp 2023-04-07 09:30:41.611133800 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x501
#include "PyWinTypes.h"
#include "PyWinObjects.h"
diff -urN pywin32-b306-orig/win32/src/win32credmodule.cpp pywin32-b306/win32/src/win32credmodule.cpp
--- pywin32-b306-orig/win32/src/win32credmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32credmodule.cpp 2023-04-07 09:30:41.635134700 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x501 // Credentials functions only available on WinXP
#include "PyWinTypes.h"
#include "PyWinObjects.h"
diff -urN pywin32-b306-orig/win32/src/win32crypt/win32cryptmodule.cpp pywin32-b306/win32/src/win32crypt/win32cryptmodule.cpp
--- pywin32-b306-orig/win32/src/win32crypt/win32cryptmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32crypt/win32cryptmodule.cpp 2023-04-07 09:30:41.663164200 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x502
#include "win32crypt.h"
@@ -584,6 +585,7 @@
pvPara = (void *)&cssrp;
}
else {
+#ifdef _MSC_VER
switch ((ULONG_PTR)StoreProvider) {
case CERT_STORE_PROV_PHYSICAL:
case CERT_STORE_PROV_FILENAME:
@@ -625,6 +627,41 @@
return NULL;
}
}
+#else
+ if (StoreProvider == CERT_STORE_PROV_PHYSICAL)
+ if (StoreProvider == CERT_STORE_PROV_FILENAME)
+ if (StoreProvider == CERT_STORE_PROV_SYSTEM)
+ if (StoreProvider == CERT_STORE_PROV_SYSTEM_REGISTRY)
+ if (StoreProvider == CERT_STORE_PROV_LDAP) {
+ if (!PyWinObject_AsWCHAR(obpvPara, (WCHAR **)&pvPara))
+ return NULL;
+ free_wchar = TRUE;
+ }
+ if (StoreProvider == CERT_STORE_PROV_REG) {
+ if (!PyWinObject_AsHKEY(obpvPara, (HKEY *)&pvPara))
+ return NULL;
+ }
+ if (StoreProvider == CERT_STORE_PROV_FILE) {
+ if (!PyWinObject_AsHANDLE(obpvPara, (HANDLE *)&pvPara))
+ return NULL;
+ }
+ if (StoreProvider == CERT_STORE_PROV_SERIALIZED)
+ if (StoreProvider == CERT_STORE_PROV_PKCS7) {
+ if (!pybuf.init(obpvPara))
+ return NULL;
+ crypt_data_blob.pbData = (BYTE*)pybuf.ptr();
+ crypt_data_blob.cbData = pybuf.len();
+ pvPara = (void *)&crypt_data_blob;
+ }
+ if (StoreProvider == CERT_STORE_PROV_MEMORY) {
+ // pvPara is not used, warn if something passed in
+ if (obpvPara != Py_None)
+ PyErr_Warn(PyExc_RuntimeWarning, "Para ignored for CERT_STORE_PROV_MEMORY");
+ }
+
+ PyErr_SetString(PyExc_NotImplementedError, "Specified store provider type not supported");
+ return NULL;
+#endif
}
Py_BEGIN_ALLOW_THREADS hcertstore = CertOpenStore(StoreProvider, dwEncodingType, hcryptprov, dwFlags, pvPara);
diff -urN pywin32-b306-orig/win32/src/win32dynamicdialog.cpp pywin32-b306/win32/src/win32dynamicdialog.cpp
--- pywin32-b306-orig/win32/src/win32dynamicdialog.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32dynamicdialog.cpp 2023-04-07 09:30:41.692131000 +0800
@@ -31,7 +31,7 @@
#ifdef WIN32GUI // being compiled from WIN32GUI
#define PYW_EXPORT
-#include "python.h"
+#include "Python.h"
#undef PyHANDLE
#include <windows.h>
#include "commctrl.h"
@@ -40,8 +40,8 @@
#ifdef MS_WINCE
#include "winbase.h"
#endif
-#include "pywintypes.h"
-#include "pywinobjects.h"
+#include "PyWinTypes.h"
+#include "PyWinObjects.h"
#include "tchar.h"
#define BASED_CODE
@@ -54,7 +54,7 @@
#endif
#include "win32dynamicdialog.h"
-static void DwordAlign(PCHAR *ptr)
+void DwordAlign(PCHAR *ptr)
{
size_t offset = ((ULONG_PTR)*ptr) & 0x03;
if (offset > 0) {
@@ -214,7 +214,7 @@
HGLOBAL CPythonDialogTemplate::ClaimTemplate()
{
- register HGLOBAL h = m_h;
+ HGLOBAL h = m_h;
m_h = NULL;
m_alloc = 0;
m_len = 0;
@@ -600,7 +600,7 @@
goto cleanup;
if (IS_INTRESOURCE(wclass))
- ret = dlg->Add((WORD)wclass, &tpl, caption);
+ ret = dlg->Add((DWORD_PTR)wclass, &tpl, caption);
else
ret = dlg->Add(wclass, &tpl, caption, pybuf.len(), (BYTE*)pybuf.ptr());
@@ -631,7 +631,7 @@
if (dlg == NULL)
return NULL;
- for (register Py_ssize_t i = 1; i < size; i++) {
+ for (Py_ssize_t i = 1; i < size; i++) {
if (!ParseDlgItemList(dlg, PyTuple_GET_ITEM(obdlg, i))) {
delete dlg;
Py_DECREF(obdlg);
diff -urN pywin32-b306-orig/win32/src/win32event.i pywin32-b306/win32/src/win32event.i
--- pywin32-b306-orig/win32/src/win32event.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32event.i 2023-04-07 09:30:41.712132700 +0800
@@ -18,6 +18,7 @@
// only seem able to make this work with an incorrect level of
// indirection, and fixing it up inline with a temp.
+%typedef PTIMERAPCROUTINE PTIMERAPCROUTINE;
%typemap(python,in) PTIMERAPCROUTINE *(PTIMERAPCROUTINE temp) {
if ($source != Py_None) {
PyErr_SetString(PyExc_TypeError, "This param must be None");
@@ -95,7 +96,6 @@
BOOLAPI CancelWaitableTimer(PyHANDLE handle);
#endif
-#end
// @pyswig <o PyHANDLE>|CreateEvent|Creates a waitable event
// @rdesc The result is a handle to the created object
@@ -399,7 +399,7 @@
BOOL bAlertable // @pyparm bool|bAlertable||alertable wait flag.
);
#endif
-%typedef DWORD DWORD_WAITAPI
+%typedef DWORD DWORD_WAITAPI;
%typemap(python,except) DWORD_WAITAPI {
Py_BEGIN_ALLOW_THREADS
$function
diff -urN pywin32-b306-orig/win32/src/win32evtlog.i pywin32-b306/win32/src/win32evtlog.i
--- pywin32-b306-orig/win32/src/win32evtlog.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32evtlog.i 2023-04-07 09:30:41.753152600 +0800
@@ -4,9 +4,18 @@
// <nl>The Evt* functions are only available on Vista and later. Attempting to call
// them on XP will result in the process exiting, rather than a python exception.
+%{
+#ifndef _MSC_VER
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600 // for EVT_SUBSCRIBE_NOTIFY_ACTION
+#endif
+%}
+
%include "typemaps.i"
%include "pywin32.i"
+%typedef HANDLE EVT_HANDLE;
+
%{
#include <structmember.h>
diff -urN pywin32-b306-orig/win32/src/win32file.i pywin32-b306/win32/src/win32file.i
--- pywin32-b306-orig/win32/src/win32file.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32file.i 2023-04-07 09:30:41.783139900 +0800
@@ -48,7 +48,7 @@
#include "winsock2.h"
#include "mswsock.h"
-#include "pywintypes.h"
+#include "PyWinTypes.h"
#include "winbase.h"
#include "assert.h"
#include <stddef.h>
@@ -73,6 +73,9 @@
%include "typemaps.i"
%include "pywin32.i"
+%typedef DCB DCB;
+%typedef COMMTIMEOUTS COMMTIMEOUTS;
+
%{
#include "datetime.h" // python's datetime header.
@@ -723,8 +726,8 @@
&obHandle, &obCreationTime, &obLastAccessTime, &obLastWriteTime, &UTCTimes))
return NULL;
- if (!PyWinObject_AsHANDLE(obHandle, &hHandle))
- return NULL;
+ if (!PyWinObject_AsHANDLE(obHandle, &hHandle))
+ return NULL;
if (obCreationTime != Py_None){
if (!PyWinObject_AsFILETIME(obCreationTime, &FileTime))
return NULL;
@@ -5356,7 +5359,7 @@
PyErr_Clear();
char *cpathin;
- if (cpathin=PyBytes_AsString(obpathin)){
+ if (cpathin==PyBytes_AsString(obpathin)){
if (htrans)
CHECK_PFN(GetFullPathNameTransactedA);
char *cpathret=NULL, *cfilepart, *cpathsave=NULL;
diff -urN pywin32-b306-orig/win32/src/win32file_comm.cpp pywin32-b306/win32/src/win32file_comm.cpp
--- pywin32-b306-orig/win32/src/win32file_comm.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32file_comm.cpp 2023-04-07 09:30:41.989293800 +0800
@@ -163,7 +163,7 @@
PyDCB::~PyDCB(void) {}
#define GET_BITFIELD_ENTRY(bitfield_name) \
- else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pydcb->m_DCB.##bitfield_name); }
+ else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pydcb->m_DCB.bitfield_name); }
PyObject *PyDCB::getattro(PyObject *self, PyObject *obname)
{
@@ -194,11 +194,11 @@
#define SET_BITFIELD_ENTRY(bitfield_name) \
else if (strcmp(name, #bitfield_name) == 0) \
{ \
- if (!PyLong_Check(v)) { \
+ if (!PyLong_Check(v)) { \
PyErr_Format(PyExc_TypeError, szNeedIntAttr, #bitfield_name); \
return -1; \
} \
- pydcb->m_DCB.##bitfield_name = PyLong_AsLong(v); \
+ pydcb->m_DCB.bitfield_name = PyLong_AsLong(v); \
return 0; \
}
@@ -362,7 +362,7 @@
#undef GET_BITFIELD_ENTRY
#define GET_BITFIELD_ENTRY(bitfield_name) \
- else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pyCOMSTAT->m_COMSTAT.##bitfield_name); }
+ else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pyCOMSTAT->m_COMSTAT.bitfield_name); }
PyObject *PyCOMSTAT::getattro(PyObject *self, PyObject *obname)
{
@@ -387,11 +387,11 @@
#define SET_BITFIELD_ENTRY(bitfield_name) \
else if (strcmp(name, #bitfield_name) == 0) \
{ \
- if (!PyLong_Check(v)) { \
+ if (!PyLong_Check(v)) { \
PyErr_Format(PyExc_TypeError, szNeedIntAttr, #bitfield_name); \
return -1; \
} \
- pyCOMSTAT->m_COMSTAT.##bitfield_name = PyLong_AsLong(v); \
+ pyCOMSTAT->m_COMSTAT.bitfield_name = PyLong_AsLong(v); \
return 0; \
}
diff -urN pywin32-b306-orig/win32/src/win32gui.i pywin32-b306/win32/src/win32gui.i
--- pywin32-b306-orig/win32/src/win32gui.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32gui.i 2023-04-07 09:30:42.189189600 +0800
@@ -23,9 +23,20 @@
%include "typemaps.i"
%include "pywintypes.i"
+%typedef POINT POINT;
+%typedef RECT RECT;
+%typedef MSG MSG;
+%typedef TRACKMOUSEEVENT TRACKMOUSEEVENT;
+%typedef PAINTSTRUCT PAINTSTRUCT;
+%typedef ICONINFO ICONINFO;
+%typedef LOGFONT LOGFONT;
+%typedef MENUITEMINFO MENUITEMINFO;
+%typedef NOTIFYICONDATA NOTIFYICONDATA;
+%typedef OPENFILENAME OPENFILENAME;
+
%{
#undef PyHANDLE
-#include "pywinobjects.h"
+#include "PyWinObjects.h"
#include "winuser.h"
#include "commctrl.h"
#include "windowsx.h" // For edit control hacks.
@@ -367,14 +378,14 @@
}
%apply COLORREF {long};
-typedef long COLORREF
+typedef long COLORREF;
typedef HANDLE WPARAM;
typedef HANDLE LPARAM;
typedef HANDLE LRESULT;
typedef int UINT;
-%typedef void *NULL_ONLY
+%typedef void *NULL_ONLY;
%typemap(python,in) NULL_ONLY {
if ($source != Py_None) {
@@ -1750,9 +1761,9 @@
%native (PyGetBufferAddressAndLen) PyGetBufferAddressAndLen;
-%typedef TCHAR *STRING_OR_ATOM_CW
-%typedef TCHAR *RESOURCE_ID
-%typedef TCHAR *RESOURCE_ID_NULLOK
+%typedef TCHAR *STRING_OR_ATOM_CW;
+%typedef TCHAR *RESOURCE_ID;
+%typedef TCHAR *RESOURCE_ID_NULLOK;
%typemap(python,arginit) STRING_OR_ATOM_CW, RESOURCE_ID, RESOURCE_ID_NULLOK{
$target=NULL;
@@ -1816,12 +1827,12 @@
return NULL;
// not on NT
HMODULE hmod = GetModuleHandle(_T("user32"));
- BOOL (WINAPI *pfnFW)(PFLASHWINFO) = NULL;
- if (hmod)
- pfnFW = (BOOL (WINAPI *)(PFLASHWINFO))GetProcAddress(hmod, "FlashWindowEx");
- if (pfnFW==NULL)
- return PyErr_Format(PyExc_NotImplementedError,
- "FlashWindowsEx is not supported on this version of windows");
+ BOOL (WINAPI *pfnFW)(PFLASHWINFO) = NULL;
+ if (hmod)
+ pfnFW = (BOOL (WINAPI *)(PFLASHWINFO))GetProcAddress(hmod, "FlashWindowEx");
+ if (pfnFW==NULL)
+ return PyErr_Format(PyExc_NotImplementedError,
+ "FlashWindowsEx is not supported on this version of windows");
Py_BEGIN_ALLOW_THREADS
rc = (*pfnFW)(&f);
Py_END_ALLOW_THREADS
@@ -7676,13 +7687,13 @@
"structure says it has %d bytes, but %d was provided",
(int)struct_bytes, (int)pybuf.len());
// @pyseeapi RegisterDeviceNotification
- HDEVNOTIFY not;
+ HDEVNOTIFY notify;
Py_BEGIN_ALLOW_THREADS
- not = RegisterDeviceNotification(handle, pybuf.ptr(), flags);
+ notify = RegisterDeviceNotification(handle, pybuf.ptr(), flags);
Py_END_ALLOW_THREADS
- if (not == NULL)
+ if (notify == NULL)
return PyWin_SetAPIError("RegisterDeviceNotification");
- return PyWinObject_FromHDEVNOTIFY(not);
+ return PyWinObject_FromHDEVNOTIFY(notify);
}
%}
%native(RegisterDeviceNotification) PyRegisterDeviceNotification;
diff -urN pywin32-b306-orig/win32/src/win32helpmodule.cpp pywin32-b306/win32/src/win32helpmodule.cpp
--- pywin32-b306-orig/win32/src/win32helpmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32helpmodule.cpp 2023-04-07 09:30:42.251187600 +0800
@@ -2546,13 +2546,11 @@
// Module constants:
#define ADD_CONSTANT(tok) \
- if (rc = PyModule_AddIntConstant(module, #tok, tok)) \
+ if (int rc = PyModule_AddIntConstant(module, #tok, tok)) \
return rc
int AddConstants(PyObject *module)
{
- int rc;
-
#ifdef _DEBUG
int debug = 1;
#else
@@ -3093,7 +3091,7 @@
// @const win32help|HH_GPROPID_CONTENT_LANGUAGE|long: LandId for desired
// content.
- return rc;
+ return 0;
}
/* List of functions exported by this module */
diff -urN pywin32-b306-orig/win32/src/win32inet_winhttp.cpp pywin32-b306/win32/src/win32inet_winhttp.cpp
--- pywin32-b306-orig/win32/src/win32inet_winhttp.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32inet_winhttp.cpp 2023-04-07 09:30:42.277191800 +0800
@@ -6,8 +6,8 @@
// The intent is to only wrap stuff which isn't otherwise doable from
// Python, such as the proxy stuff.
-#include "pywintypes.h"
-#include "pywinobjects.h"
+#include "PyWinTypes.h"
+#include "PyWinObjects.h"
#include "winhttp.h"
// @doc
diff -urN pywin32-b306-orig/win32/src/win32lzmodule.cpp pywin32-b306/win32/src/win32lzmodule.cpp
--- pywin32-b306-orig/win32/src/win32lzmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32lzmodule.cpp 2023-04-07 09:30:42.289189100 +0800
@@ -11,7 +11,7 @@
******************************************************************/
-#include "Pywintypes.h"
+#include "PyWinTypes.h"
#include "lzexpand.h"
static PyObject *obHandleMap = NULL;
diff -urN pywin32-b306-orig/win32/src/win32net/win32netmisc.cpp pywin32-b306/win32/src/win32net/win32netmisc.cpp
--- pywin32-b306-orig/win32/src/win32net/win32netmisc.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32net/win32netmisc.cpp 2023-04-07 09:30:42.316178600 +0800
@@ -1418,7 +1418,8 @@
#if WINVER >= 0x0500
-extern "C" NetValidateNamefunc pfnNetValidateName = NULL;
+extern "C" NetValidateNamefunc pfnNetValidateName;
+NetValidateNamefunc pfnNetValidateName = NULL;
// @pymethod |win32net|NetValidateName|Checks that domain/machine/workgroup name is valid for given context
// @rdesc Returns none if valid, exception if not
// @comm If Account and Password aren't passed, current logon credentials are used
@@ -1461,8 +1462,10 @@
return ret;
}
-extern "C" NetValidatePasswordPolicyfunc pfnNetValidatePasswordPolicy = NULL;
-extern "C" NetValidatePasswordPolicyFreefunc pfnNetValidatePasswordPolicyFree = NULL;
+extern "C" NetValidatePasswordPolicyfunc pfnNetValidatePasswordPolicy;
+NetValidatePasswordPolicyfunc pfnNetValidatePasswordPolicy = NULL;
+extern "C" NetValidatePasswordPolicyFreefunc pfnNetValidatePasswordPolicyFree;
+NetValidatePasswordPolicyFreefunc pfnNetValidatePasswordPolicyFree = NULL;
static void PyObject_CleanupAUTH_INPUT(NET_VALIDATE_AUTHENTICATION_INPUT_ARG *p)
{
diff -urN pywin32-b306-orig/win32/src/win32pdhmodule.cpp pywin32-b306/win32/src/win32pdhmodule.cpp
--- pywin32-b306-orig/win32/src/win32pdhmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32pdhmodule.cpp 2023-04-07 09:30:42.335187600 +0800
@@ -1004,7 +1004,7 @@
{ \
if (i < seqLen) { \
PyObject *subItem = PyTuple_GET_ITEM(flags_tuple, i); \
- myCfg.cfg.##r = PyObject_IsTrue(subItem); \
+ myCfg.cfg.r = PyObject_IsTrue(subItem); \
} \
}
diff -urN pywin32-b306-orig/win32/src/win32process.i pywin32-b306/win32/src/win32process.i
--- pywin32-b306-orig/win32/src/win32process.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32process.i 2023-04-07 09:30:42.392190300 +0800
@@ -1630,6 +1630,7 @@
$target = PyWinLong_FromVoidPtr($source);
}
+%typedef ULONG_PTR ULONG_PTR;
// @pyswig long|VirtualAllocEx|
LONG_VOIDPTR VirtualAllocEx(
diff -urN pywin32-b306-orig/win32/src/win32rasmodule.cpp pywin32-b306/win32/src/win32rasmodule.cpp
--- pywin32-b306-orig/win32/src/win32rasmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32rasmodule.cpp 2023-04-07 09:30:42.424182900 +0800
@@ -15,7 +15,7 @@
#define WINVER 0x500
#endif
-#include "pywintypes.h"
+#include "PyWinTypes.h"
#include "ras.h"
#include "raserror.h"
@@ -549,7 +549,7 @@
pNotification = NULL;
}
else if (PyCallable_Check(obCallback)) {
- pNotification = PyRasDialFunc1;
+ pNotification = (LPVOID)PyRasDialFunc1;
notType = 1;
}
else if (PyLong_Check(obCallback)) {
@@ -787,15 +787,15 @@
// @pymethod string|win32ras|GetErrorString|Returns an error string for a RAS error code.
static PyObject *PyRasGetErrorString(PyObject *self, PyObject *args)
{
+ TCHAR buf[512];
DWORD error;
- DWORD rc;
+ DWORD rc = RasGetErrorString(error, buf, sizeof(buf) / sizeof(buf[0]));
if (!PyArg_ParseTuple(args, "i:GetErrorString",
&error)) // @pyparm int|error||The error value being queried.
return NULL;
- TCHAR buf[512];
// @pyseeapi RasGetErrorString
- if (rc = RasGetErrorString(error, buf, sizeof(buf) / sizeof(buf[0])))
+ if (rc)
return ReturnRasError("RasGetErrorString");
return PyWinObject_FromTCHAR(buf);
}
@@ -803,14 +803,14 @@
// @pymethod |win32ras|HangUp|Terminates a remote access session.
static PyObject *PyRasHangUp(PyObject *self, PyObject *args)
{
- DWORD rc;
HRASCONN hras;
+ DWORD rc = RasHangUp(hras);
if (!PyArg_ParseTuple(args, "O&:HangUp", PyWinObject_AsHANDLE,
&hras)) // @pyparm int|hras||The handle to the RAS connection to be terminated.
return NULL;
// @pyseeapi RasHangUp
- if (rc = RasHangUp(hras))
+ if (rc)
return ReturnRasError("RasHangup");
Py_INCREF(Py_None);
return Py_None;
@@ -823,7 +823,7 @@
if (!PyArg_ParseTuple(args, "O&:IsHandleValid", PyWinObject_AsHANDLE,
&hras)) // @pyparm int|hras||The handle to the RAS connection being checked.
return NULL;
- BOOL bRet = (hras >= 0);
+ BOOL bRet = ((INT_PTR)hras >= 0);
return PyBool_FromLong(bRet);
}
@@ -929,7 +929,7 @@
{NULL, NULL}};
#define ADD_CONSTANT(tok) \
- if (rc = PyModule_AddIntConstant(module, #tok, tok)) \
+ if (int rc = PyModule_AddIntConstant(module, #tok, tok)) \
return rc
#define ADD_ENUM(parta, partb) \
if (rc = PyModule_AddIntConstant(module, #parta "_" #partb, parta::partb)) \
@@ -940,7 +940,6 @@
static int AddConstants(PyObject *module)
{
- int rc;
ADD_CONSTANT(RASCS_OpenPort); // @const win32ras|RASCS_OpenPort|Constant for RAS state.
ADD_CONSTANT(RASCS_PortOpened); // @const win32ras|RASCS_PortOpened|Constant for RAS state.
ADD_CONSTANT(RASCS_ConnectDevice); // @const win32ras|RASCS_ConnectDevice|Constant for RAS state.
diff -urN pywin32-b306-orig/win32/src/win32security.i pywin32-b306/win32/src/win32security.i
--- pywin32-b306-orig/win32/src/win32security.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32security.i 2023-04-07 09:30:42.457185700 +0800
@@ -5,6 +5,7 @@
%module win32security // An interface to the win32 security API's
%{
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Vista!
%}
@@ -76,7 +77,7 @@
typedef PSecurityFunctionTableW (SEC_ENTRY *InitSecurityInterfacefunc)(void);
static InitSecurityInterfacefunc pfnInitSecurityInterface=NULL;
-extern PSecurityFunctionTableW psecurityfunctiontable=NULL;
+PSecurityFunctionTableW psecurityfunctiontable=NULL;
typedef BOOL (WINAPI *TranslateNamefunc)(LPCTSTR, EXTENDED_NAME_FORMAT, EXTENDED_NAME_FORMAT, LPTSTR, PULONG);
static TranslateNamefunc pfnTranslateName=NULL;
@@ -89,20 +90,20 @@
// function pointers used in win32security_sspi.cpp and win32security_ds.cpp
-extern DsBindfunc pfnDsBind=NULL;
-extern DsUnBindfunc pfnDsUnBind=NULL;
-extern DsGetSpnfunc pfnDsGetSpn=NULL;
-extern DsWriteAccountSpnfunc pfnDsWriteAccountSpn=NULL;
-extern DsFreeSpnArrayfunc pfnDsFreeSpnArray=NULL;
-extern DsGetDcNamefunc pfnDsGetDcName=NULL;
-extern DsCrackNamesfunc pfnDsCrackNames=NULL;
-extern DsListInfoForServerfunc pfnDsListInfoForServer=NULL;
-extern DsListServersForDomainInSitefunc pfnDsListServersForDomainInSite=NULL;
-extern DsListServersInSitefunc pfnDsListServersInSite=NULL;
-extern DsListSitesfunc pfnDsListSites=NULL;
-extern DsListDomainsInSitefunc pfnDsListDomainsInSite=NULL;
-extern DsListRolesfunc pfnDsListRoles=NULL;
-extern DsFreeNameResultfunc pfnDsFreeNameResult=NULL;
+DsBindfunc pfnDsBind=NULL;
+DsUnBindfunc pfnDsUnBind=NULL;
+DsGetSpnfunc pfnDsGetSpn=NULL;
+DsWriteAccountSpnfunc pfnDsWriteAccountSpn=NULL;
+DsFreeSpnArrayfunc pfnDsFreeSpnArray=NULL;
+DsGetDcNamefunc pfnDsGetDcName=NULL;
+DsCrackNamesfunc pfnDsCrackNames=NULL;
+DsListInfoForServerfunc pfnDsListInfoForServer=NULL;
+DsListServersForDomainInSitefunc pfnDsListServersForDomainInSite=NULL;
+DsListServersInSitefunc pfnDsListServersInSite=NULL;
+DsListSitesfunc pfnDsListSites=NULL;
+DsListDomainsInSitefunc pfnDsListDomainsInSite=NULL;
+DsListRolesfunc pfnDsListRoles=NULL;
+DsFreeNameResultfunc pfnDsFreeNameResult=NULL;
static HMODULE advapi32_dll=NULL;
static HMODULE secur32_dll =NULL;
@@ -114,8 +115,8 @@
HMODULE loadmodule(WCHAR *dllname)
{
HMODULE hmodule = GetModuleHandle(dllname);
- if (hmodule==NULL)
- hmodule = LoadLibrary(dllname);
+ if (hmodule==NULL)
+ hmodule = LoadLibrary(dllname);
return hmodule;
}
@@ -3337,12 +3338,14 @@
if (PyWinObject_AsHANDLE(obExistingTokenHandle, &ExistingTokenHandle))
if (PyWinObject_AsSID_AND_ATTRIBUTESArray(obSidsToDisable, &SidsToDisable, &DisableSidCount))
if (PyWinObject_AsSID_AND_ATTRIBUTESArray(obSidsToRestrict, &SidsToRestrict, &RestrictedSidCount))
- if (PyWinObject_AsLUID_AND_ATTRIBUTESArray(obPrivilegesToDelete, &PrivilegesToDelete, &DeletePrivilegeCount))
+ if (PyWinObject_AsLUID_AND_ATTRIBUTESArray(obPrivilegesToDelete, &PrivilegesToDelete, &DeletePrivilegeCount)){
if ((*pfnCreateRestrictedToken)(ExistingTokenHandle,Flags,DisableSidCount,SidsToDisable,
- DeletePrivilegeCount,PrivilegesToDelete,RestrictedSidCount,SidsToRestrict,&NewTokenHandle))
+ DeletePrivilegeCount,PrivilegesToDelete,RestrictedSidCount,SidsToRestrict,&NewTokenHandle)){
ret=PyWinObject_FromHANDLE(NewTokenHandle);
- else
+ }else{
PyWin_SetAPIError("CreateRestrictedToken",GetLastError());
+ }
+ }
if (SidsToDisable!=NULL)
free(SidsToDisable);
if (PrivilegesToDelete!=NULL)
diff -urN pywin32-b306-orig/win32/src/win32service.i pywin32-b306/win32/src/win32service.i
--- pywin32-b306-orig/win32/src/win32service.i 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32service.i 2023-04-07 09:30:42.479185200 +0800
@@ -3,9 +3,18 @@
%module win32service // An interface to the Windows NT Service API
+%{
+#ifndef _MSC_VER
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600 // for SERVICE_*
+#endif
+%}
+
%include "typemaps.i"
%include "pywin32.i"
+%typedef SERVICE_STATUS SERVICE_STATUS;
+
%{
#undef PyHANDLE
#include "PyWinObjects.h"
diff -urN pywin32-b306-orig/win32/src/win32tsmodule.cpp pywin32-b306/win32/src/win32tsmodule.cpp
--- pywin32-b306-orig/win32/src/win32tsmodule.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32tsmodule.cpp 2023-04-07 09:30:42.494186700 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x501
#include "PyWinTypes.h"
#include "PyWinObjects.h"
diff -urN pywin32-b306-orig/win32/src/win32wnet/PyNCB.cpp pywin32-b306/win32/src/win32wnet/PyNCB.cpp
--- pywin32-b306-orig/win32/src/win32wnet/PyNCB.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32wnet/PyNCB.cpp 2023-04-07 09:30:42.533383100 +0800
@@ -17,9 +17,9 @@
******************************************************************/
// @doc
-#include "Pywintypes.h"
+#include "PyWinTypes.h"
#include <windows.h>
-#include "python.h"
+#include "Python.h"
#include "PyNCB.h"
#include <crtdbg.h>
diff -urN pywin32-b306-orig/win32/src/win32wnet/PyNetresource.cpp pywin32-b306/win32/src/win32wnet/PyNetresource.cpp
--- pywin32-b306-orig/win32/src/win32wnet/PyNetresource.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32wnet/PyNetresource.cpp 2023-04-07 09:30:42.547369500 +0800
@@ -18,7 +18,7 @@
// @doc
#include "PyWinTypes.h"
-#include "netres.h" // C++ header file for NETRESOURCE object
+#include "Netres.h" // C++ header file for NETRESOURCE object
static PyObject *NETRESOURCE_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
diff -urN pywin32-b306-orig/win32/src/win32wnet/win32wnet.cpp pywin32-b306/win32/src/win32wnet/win32wnet.cpp
--- pywin32-b306-orig/win32/src/win32wnet/win32wnet.cpp 2023-03-26 07:53:26.000000000 +0800
+++ pywin32-b306/win32/src/win32wnet/win32wnet.cpp 2023-04-07 09:30:42.566367800 +0800
@@ -38,8 +38,8 @@
#include "PyWinTypes.h"
#include "PyWinObjects.h" // for the PyHANDLE impl.
-#include "netres.h" // NETRESOURCE Type
-#include "pyncb.h"
+#include "Netres.h" // NETRESOURCE Type
+#include "PyNCB.h"
/****************************************************************************
HELPER FUNCTIONS