mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 16:20:11 -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.
|
// Some devices insert quite some trailing space here.
|
||||||
wchar_t *wbuffer = (wchar_t *)buffer;
|
wchar_t *wbuffer = (wchar_t *)buffer;
|
||||||
size_t wlen = wcslen(wbuffer);
|
size_t wlen = wcsnlen_s(wbuffer, sizeof(buffer) / sizeof(wchar_t));
|
||||||
while (iswspace(wbuffer[wlen - 1])) {
|
while (wlen > 0 && iswspace(wbuffer[wlen - 1])) {
|
||||||
wbuffer[--wlen] = 0;
|
wbuffer[--wlen] = 0;
|
||||||
}
|
}
|
||||||
TextEncoder encoder;
|
TextEncoder encoder;
|
||||||
|
@ -54,7 +54,7 @@ private:
|
|||||||
|
|
||||||
static LRESULT WINAPI window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
|
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;
|
pCM_Get_DevNode_Property _CM_Get_DevNode_PropertyW;
|
||||||
|
|
||||||
friend class InputDeviceManager;
|
friend class InputDeviceManager;
|
||||||
|
@ -159,11 +159,11 @@ typedef struct _HIDP_DATA {
|
|||||||
} HIDP_DATA, *PHIDP_DATA;
|
} HIDP_DATA, *PHIDP_DATA;
|
||||||
|
|
||||||
typedef LONG NTSTATUS;
|
typedef LONG NTSTATUS;
|
||||||
typedef NTSTATUS (*pHidP_GetCaps)(PHIDP_PREPARSED_DATA, PHIDP_CAPS);
|
typedef NTSTATUS (__stdcall *pHidP_GetCaps)(PHIDP_PREPARSED_DATA, PHIDP_CAPS);
|
||||||
typedef NTSTATUS (*pHidP_GetButtonCaps)(HIDP_REPORT_TYPE, PHIDP_BUTTON_CAPS, PUSHORT, PHIDP_PREPARSED_DATA);
|
typedef NTSTATUS (__stdcall *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 (__stdcall *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 NTSTATUS (__stdcall *pHidP_GetData)(HIDP_REPORT_TYPE, PHIDP_DATA, PULONG, PHIDP_PREPARSED_DATA, PCHAR, ULONG);
|
||||||
typedef ULONG (*pHidP_MaxDataListLength)(HIDP_REPORT_TYPE, PHIDP_PREPARSED_DATA);
|
typedef ULONG (__stdcall *pHidP_MaxDataListLength)(HIDP_REPORT_TYPE, PHIDP_PREPARSED_DATA);
|
||||||
|
|
||||||
static pHidP_GetCaps _HidP_GetCaps = nullptr;
|
static pHidP_GetCaps _HidP_GetCaps = nullptr;
|
||||||
static pHidP_GetButtonCaps _HidP_GetButtonCaps = nullptr;
|
static pHidP_GetButtonCaps _HidP_GetButtonCaps = nullptr;
|
||||||
|
@ -99,12 +99,12 @@ typedef struct _XINPUT_CAPABILITIES_EX {
|
|||||||
WORD Unknown2;
|
WORD Unknown2;
|
||||||
} XINPUT_CAPABILITIES_EX;
|
} XINPUT_CAPABILITIES_EX;
|
||||||
|
|
||||||
typedef DWORD (*pXInputGetState)(DWORD, XINPUT_STATE *);
|
typedef DWORD (WINAPI *pXInputGetState)(DWORD, XINPUT_STATE *);
|
||||||
typedef DWORD (*pXInputSetState)(DWORD, XINPUT_VIBRATION *);
|
typedef DWORD (WINAPI *pXInputSetState)(DWORD, XINPUT_VIBRATION *);
|
||||||
typedef DWORD (*pXInputGetCapabilities)(DWORD, DWORD, XINPUT_CAPABILITIES *);
|
typedef DWORD (WINAPI *pXInputGetCapabilities)(DWORD, DWORD, XINPUT_CAPABILITIES *);
|
||||||
typedef DWORD (*pXInputGetCapabilitiesEx)(DWORD, DWORD, DWORD, XINPUT_CAPABILITIES_EX *);
|
typedef DWORD (WINAPI *pXInputGetCapabilitiesEx)(DWORD, DWORD, DWORD, XINPUT_CAPABILITIES_EX *);
|
||||||
typedef DWORD (*pXInputGetBatteryInformation)(DWORD, BYTE, XINPUT_BATTERY_INFORMATION *);
|
typedef DWORD (WINAPI *pXInputGetBatteryInformation)(DWORD, BYTE, XINPUT_BATTERY_INFORMATION *);
|
||||||
typedef DWORD (*pXInputGetBaseBusInformation)(DWORD, XINPUT_BUSINFO *);
|
typedef DWORD (WINAPI *pXInputGetBaseBusInformation)(DWORD, XINPUT_BUSINFO *);
|
||||||
|
|
||||||
static pXInputGetState get_state = nullptr;
|
static pXInputGetState get_state = nullptr;
|
||||||
static pXInputSetState set_state = nullptr;
|
static pXInputSetState set_state = nullptr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user