mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 00:06:44 -04:00
device: fix stack corruption crashes on 32-bit Windows
This commit is contained in:
parent
3a6f7fcde1
commit
22cac1cdf9
@ -289,8 +289,8 @@ on_input_device_arrival(HANDLE handle) {
|
||||
|
||||
// Some devices insert quite some trailing space here.
|
||||
wchar_t *wbuffer = (wchar_t *)buffer;
|
||||
size_t wlen = wcslen(wbuffer);
|
||||
while (iswspace(wbuffer[wlen - 1])) {
|
||||
size_t wlen = wcsnlen_s(wbuffer, sizeof(buffer) / sizeof(wchar_t));
|
||||
while (wlen > 0 && iswspace(wbuffer[wlen - 1])) {
|
||||
wbuffer[--wlen] = 0;
|
||||
}
|
||||
TextEncoder encoder;
|
||||
|
@ -54,7 +54,7 @@ private:
|
||||
|
||||
static LRESULT WINAPI window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
|
||||
|
||||
typedef CONFIGRET (*pCM_Get_DevNode_Property)(DEVINST, const DEVPROPKEY *, DEVPROPTYPE *, PBYTE, PULONG, ULONG);
|
||||
typedef CONFIGRET (WINAPI *pCM_Get_DevNode_Property)(DEVINST, const DEVPROPKEY *, DEVPROPTYPE *, PBYTE, PULONG, ULONG);
|
||||
pCM_Get_DevNode_Property _CM_Get_DevNode_PropertyW;
|
||||
|
||||
friend class InputDeviceManager;
|
||||
|
@ -159,11 +159,11 @@ typedef struct _HIDP_DATA {
|
||||
} HIDP_DATA, *PHIDP_DATA;
|
||||
|
||||
typedef LONG NTSTATUS;
|
||||
typedef NTSTATUS (*pHidP_GetCaps)(PHIDP_PREPARSED_DATA, PHIDP_CAPS);
|
||||
typedef NTSTATUS (*pHidP_GetButtonCaps)(HIDP_REPORT_TYPE, PHIDP_BUTTON_CAPS, PUSHORT, PHIDP_PREPARSED_DATA);
|
||||
typedef NTSTATUS (*pHidP_GetValueCaps)(HIDP_REPORT_TYPE, PHIDP_VALUE_CAPS, PUSHORT, PHIDP_PREPARSED_DATA);
|
||||
typedef NTSTATUS (*pHidP_GetData)(HIDP_REPORT_TYPE, PHIDP_DATA, PULONG, PHIDP_PREPARSED_DATA, PCHAR, ULONG);
|
||||
typedef ULONG (*pHidP_MaxDataListLength)(HIDP_REPORT_TYPE, PHIDP_PREPARSED_DATA);
|
||||
typedef NTSTATUS (__stdcall *pHidP_GetCaps)(PHIDP_PREPARSED_DATA, PHIDP_CAPS);
|
||||
typedef NTSTATUS (__stdcall *pHidP_GetButtonCaps)(HIDP_REPORT_TYPE, PHIDP_BUTTON_CAPS, PUSHORT, PHIDP_PREPARSED_DATA);
|
||||
typedef NTSTATUS (__stdcall *pHidP_GetValueCaps)(HIDP_REPORT_TYPE, PHIDP_VALUE_CAPS, PUSHORT, PHIDP_PREPARSED_DATA);
|
||||
typedef NTSTATUS (__stdcall *pHidP_GetData)(HIDP_REPORT_TYPE, PHIDP_DATA, PULONG, PHIDP_PREPARSED_DATA, PCHAR, ULONG);
|
||||
typedef ULONG (__stdcall *pHidP_MaxDataListLength)(HIDP_REPORT_TYPE, PHIDP_PREPARSED_DATA);
|
||||
|
||||
static pHidP_GetCaps _HidP_GetCaps = nullptr;
|
||||
static pHidP_GetButtonCaps _HidP_GetButtonCaps = nullptr;
|
||||
|
@ -99,12 +99,12 @@ typedef struct _XINPUT_CAPABILITIES_EX {
|
||||
WORD Unknown2;
|
||||
} XINPUT_CAPABILITIES_EX;
|
||||
|
||||
typedef DWORD (*pXInputGetState)(DWORD, XINPUT_STATE *);
|
||||
typedef DWORD (*pXInputSetState)(DWORD, XINPUT_VIBRATION *);
|
||||
typedef DWORD (*pXInputGetCapabilities)(DWORD, DWORD, XINPUT_CAPABILITIES *);
|
||||
typedef DWORD (*pXInputGetCapabilitiesEx)(DWORD, DWORD, DWORD, XINPUT_CAPABILITIES_EX *);
|
||||
typedef DWORD (*pXInputGetBatteryInformation)(DWORD, BYTE, XINPUT_BATTERY_INFORMATION *);
|
||||
typedef DWORD (*pXInputGetBaseBusInformation)(DWORD, XINPUT_BUSINFO *);
|
||||
typedef DWORD (WINAPI *pXInputGetState)(DWORD, XINPUT_STATE *);
|
||||
typedef DWORD (WINAPI *pXInputSetState)(DWORD, XINPUT_VIBRATION *);
|
||||
typedef DWORD (WINAPI *pXInputGetCapabilities)(DWORD, DWORD, XINPUT_CAPABILITIES *);
|
||||
typedef DWORD (WINAPI *pXInputGetCapabilitiesEx)(DWORD, DWORD, DWORD, XINPUT_CAPABILITIES_EX *);
|
||||
typedef DWORD (WINAPI *pXInputGetBatteryInformation)(DWORD, BYTE, XINPUT_BATTERY_INFORMATION *);
|
||||
typedef DWORD (WINAPI *pXInputGetBaseBusInformation)(DWORD, XINPUT_BUSINFO *);
|
||||
|
||||
static pXInputGetState get_state = nullptr;
|
||||
static pXInputSetState set_state = nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user