Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
f5b32121
Commit
f5b32121
authored
Oct 11, 2021
by
Rémi Bernon
Committed by
Alexandre Julliard
Oct 11, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dinput: Use msvcrt memory allocation functions.
Signed-off-by:
Rémi Bernon
<
rbernon@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
87c7f1bd
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
95 additions
and
100 deletions
+95
-100
ansi.c
dlls/dinput/ansi.c
+23
-19
config.c
dlls/dinput/config.c
+6
-6
device.c
dlls/dinput/device.c
+32
-37
dinput_main.c
dlls/dinput/dinput_main.c
+7
-10
joystick_hid.c
dlls/dinput/joystick_hid.c
+19
-20
keyboard.c
dlls/dinput/keyboard.c
+4
-4
mouse.c
dlls/dinput/mouse.c
+4
-4
No files found.
dlls/dinput/ansi.c
View file @
f5b32121
...
...
@@ -129,7 +129,7 @@ static HRESULT string_atow( const char *in, WCHAR **out )
if
(
!
in
)
return
DI_OK
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
in
,
-
1
,
NULL
,
0
);
if
(
!
(
*
out
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
)
)))
return
DIERR_OUTOFMEMORY
;
if
(
!
(
*
out
=
malloc
(
len
*
sizeof
(
WCHAR
)
)))
return
DIERR_OUTOFMEMORY
;
MultiByteToWideChar
(
CP_ACP
,
0
,
in
,
-
1
,
*
out
,
len
);
return
DI_OK
;
...
...
@@ -252,7 +252,7 @@ static HRESULT diconfiguredevicesparams_atow( const DICONFIGUREDEVICESPARAMSA *i
len_a
=
name_a
-
in
->
lptszUserNames
+
1
;
len_w
=
MultiByteToWideChar
(
CP_ACP
,
0
,
in
->
lptszUserNames
,
len_a
,
NULL
,
0
);
out
->
lptszUserNames
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
len_w
*
sizeof
(
WCHAR
)
);
out
->
lptszUserNames
=
calloc
(
len_w
,
sizeof
(
WCHAR
)
);
if
(
!
out
->
lptszUserNames
)
return
DIERR_OUTOFMEMORY
;
MultiByteToWideChar
(
CP_ACP
,
0
,
in
->
lptszUserNames
,
len_a
,
out
->
lptszUserNames
,
len_w
);
...
...
@@ -572,17 +572,17 @@ static HRESULT WINAPI dinput_device_a_BuildActionMap( IDirectInputDevice8A *ifac
if
(
FAILED
(
hr
=
string_atow
(
username_a
,
&
username_w
)))
return
hr
;
format_w
.
dwNumActions
=
format_a
->
dwNumActions
;
format_w
.
rgoAction
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
format_a
->
dwNumActions
*
sizeof
(
DIACTIONW
)
);
format_w
.
rgoAction
=
calloc
(
format_a
->
dwNumActions
,
sizeof
(
DIACTIONW
)
);
if
(
!
format_w
.
rgoAction
)
hr
=
DIERR_OUTOFMEMORY
;
else
{
diactionformat_atow
(
format_a
,
&
format_w
,
FALSE
);
hr
=
IDirectInputDevice8_BuildActionMap
(
iface_w
,
&
format_w
,
username_w
,
flags
);
diactionformat_wtoa
(
&
format_w
,
format_a
);
HeapFree
(
GetProcessHeap
(),
0
,
format_w
.
rgoAction
);
free
(
format_w
.
rgoAction
);
}
HeapFree
(
GetProcessHeap
(),
0
,
username_w
);
free
(
username_w
);
return
hr
;
}
...
...
@@ -601,17 +601,17 @@ static HRESULT WINAPI dinput_device_a_SetActionMap( IDirectInputDevice8A *iface_
if
(
FAILED
(
hr
=
string_atow
(
username_a
,
&
username_w
)))
return
hr
;
format_w
.
dwNumActions
=
format_a
->
dwNumActions
;
format_w
.
rgoAction
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
format_a
->
dwNumActions
*
sizeof
(
DIACTIONW
)
);
format_w
.
rgoAction
=
calloc
(
format_a
->
dwNumActions
,
sizeof
(
DIACTIONW
)
);
if
(
!
format_w
.
rgoAction
)
hr
=
DIERR_OUTOFMEMORY
;
else
{
diactionformat_atow
(
format_a
,
&
format_w
,
FALSE
);
hr
=
IDirectInputDevice8_SetActionMap
(
iface_w
,
&
format_w
,
username_w
,
flags
);
diactionformat_wtoa
(
&
format_w
,
format_a
);
HeapFree
(
GetProcessHeap
(),
0
,
format_w
.
rgoAction
);
free
(
format_w
.
rgoAction
);
}
HeapFree
(
GetProcessHeap
(),
0
,
username_w
);
free
(
username_w
);
return
hr
;
}
...
...
@@ -627,12 +627,12 @@ static HRESULT WINAPI dinput_device_a_GetImageInfo( IDirectInputDevice8A *iface_
if
(
header_a
->
dwSizeImageInfo
!=
sizeof
(
DIDEVICEIMAGEINFOA
))
return
DIERR_INVALIDPARAM
;
header_w
.
dwBufferSize
=
(
header_a
->
dwBufferSize
/
sizeof
(
DIDEVICEIMAGEINFOA
))
*
sizeof
(
DIDEVICEIMAGEINFOW
);
header_w
.
lprgImageInfoArray
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
header_w
.
dwBufferSize
);
header_w
.
lprgImageInfoArray
=
calloc
(
header_w
.
dwBufferSize
,
1
);
if
(
!
header_w
.
lprgImageInfoArray
)
return
DIERR_OUTOFMEMORY
;
hr
=
IDirectInputDevice8_GetImageInfo
(
iface_w
,
&
header_w
);
dideviceimageinfoheader_wtoa
(
&
header_w
,
header_a
);
HeapFree
(
GetProcessHeap
(),
0
,
header_w
.
lprgImageInfoArray
);
free
(
header_w
.
lprgImageInfoArray
);
return
hr
;
}
...
...
@@ -770,7 +770,7 @@ static HRESULT WINAPI dinput8_a_FindDevice( IDirectInput8A *iface_a, REFGUID gui
if
(
FAILED
(
hr
=
string_atow
(
name_a
,
&
name_w
)))
return
hr
;
hr
=
IDirectInput8_FindDevice
(
iface_w
,
guid
,
name_w
,
instance_guid
);
HeapFree
(
GetProcessHeap
(),
0
,
name_w
);
free
(
name_w
);
return
hr
;
}
...
...
@@ -805,17 +805,17 @@ static HRESULT WINAPI dinput8_a_EnumDevicesBySemantics( IDirectInput8A *iface_a,
if
(
FAILED
(
hr
=
string_atow
(
username_a
,
&
username_w
)))
return
hr
;
format_w
.
dwNumActions
=
format_a
->
dwNumActions
;
format_w
.
rgoAction
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
format_a
->
dwNumActions
*
sizeof
(
DIACTIONW
)
);
format_w
.
rgoAction
=
calloc
(
format_a
->
dwNumActions
,
sizeof
(
DIACTIONW
)
);
if
(
!
format_w
.
rgoAction
)
hr
=
DIERR_OUTOFMEMORY
;
else
{
diactionformat_atow
(
format_a
,
&
format_w
,
FALSE
);
hr
=
IDirectInput8_EnumDevicesBySemantics
(
iface_w
,
username_w
,
&
format_w
,
enum_devices_by_semantics_wtoa_callback
,
&
params
,
flags
);
HeapFree
(
GetProcessHeap
(),
0
,
format_w
.
rgoAction
);
free
(
format_w
.
rgoAction
);
}
HeapFree
(
GetProcessHeap
(),
0
,
username_w
);
free
(
username_w
);
return
hr
;
}
...
...
@@ -834,7 +834,7 @@ static HRESULT WINAPI dinput8_a_ConfigureDevices( IDirectInput8A *iface_a, LPDIC
if
(
FAILED
(
hr
=
diconfiguredevicesparams_atow
(
params_a
,
&
params_w
)))
return
hr
;
format_w
.
dwNumActions
=
format_a
->
dwNumActions
;
format_w
.
rgoAction
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
format_a
->
dwNumActions
*
sizeof
(
DIACTIONW
)
);
format_w
.
rgoAction
=
calloc
(
format_a
->
dwNumActions
,
sizeof
(
DIACTIONW
)
);
if
(
!
format_w
.
rgoAction
)
hr
=
DIERR_OUTOFMEMORY
;
else
{
...
...
@@ -843,11 +843,15 @@ static HRESULT WINAPI dinput8_a_ConfigureDevices( IDirectInput8A *iface_a, LPDIC
if
(
SUCCEEDED
(
hr
))
hr
=
IDirectInput8_ConfigureDevices
(
iface_w
,
callback
,
&
params_w
,
flags
,
ref
);
if
(
!
format_w
.
hInstString
)
for
(
i
=
0
;
i
<
format_w
.
dwNumActions
;
++
i
)
HeapFree
(
GetProcessHeap
(),
0
,
(
void
*
)
format_w
.
rgoAction
[
i
].
lptszActionName
);
HeapFree
(
GetProcessHeap
(),
0
,
format_w
.
rgoAction
);
if
(
!
format_w
.
hInstString
)
{
for
(
i
=
0
;
i
<
format_w
.
dwNumActions
;
++
i
)
free
(
(
void
*
)
format_w
.
rgoAction
[
i
].
lptszActionName
);
}
free
(
format_w
.
rgoAction
);
}
HeapFree
(
GetProcessHeap
(),
0
,
params_w
.
lptszUserNames
);
free
(
params_w
.
lptszUserNames
);
return
hr
;
}
...
...
@@ -946,7 +950,7 @@ static HRESULT WINAPI dinput7_a_FindDevice( IDirectInput7A *iface_a, REFGUID gui
if
(
FAILED
(
hr
=
string_atow
(
name_a
,
&
name_w
)))
return
hr
;
hr
=
IDirectInput7_FindDevice
(
iface_w
,
guid
,
name_w
,
instance_guid
);
HeapFree
(
GetProcessHeap
(),
0
,
name_w
);
free
(
name_w
);
return
hr
;
}
...
...
dlls/dinput/config.c
View file @
f5b32121
...
...
@@ -190,7 +190,7 @@ static void init_devices(HWND dialog, IDirectInput8W *lpDI, DIDevicesData *data,
IDirectInput8_EnumDevicesBySemantics
(
lpDI
,
NULL
,
lpdiaf
,
count_devices
,
(
LPVOID
)
data
,
0
);
/* Allocate devices */
data
->
devices
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
DeviceData
)
*
data
->
ndevices
);
data
->
devices
=
malloc
(
sizeof
(
DeviceData
)
*
data
->
ndevices
);
/* Collect and insert */
data
->
ndevices
=
0
;
...
...
@@ -210,11 +210,11 @@ static void destroy_data(HWND dialog)
for
(
i
=
0
;
i
<
devices_data
->
ndevices
;
i
++
)
IDirectInputDevice8_Release
(
devices_data
->
devices
[
i
].
lpdid
);
HeapFree
(
GetProcessHeap
(),
0
,
devices_data
->
devices
);
free
(
devices_data
->
devices
);
/* Free the backup LPDIACTIONFORMATW */
HeapFree
(
GetProcessHeap
(),
0
,
data
->
original_lpdiaf
->
rgoAction
);
HeapFree
(
GetProcessHeap
(),
0
,
data
->
original_lpdiaf
);
free
(
data
->
original_lpdiaf
->
rgoAction
);
free
(
data
->
original_lpdiaf
);
}
static
void
fill_device_object_list
(
HWND
dialog
)
...
...
@@ -365,9 +365,9 @@ static INT_PTR CALLBACK ConfigureDevicesDlgProc(HWND dialog, UINT uMsg, WPARAM w
init_listview_columns
(
dialog
);
/* Create a backup action format for CANCEL and RESET operations */
data
->
original_lpdiaf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
data
->
original_lpdiaf
)
);
data
->
original_lpdiaf
=
malloc
(
sizeof
(
*
data
->
original_lpdiaf
)
);
data
->
original_lpdiaf
->
dwNumActions
=
data
->
lpdiaf
->
dwNumActions
;
data
->
original_lpdiaf
->
rgoAction
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
DIACTIONW
)
*
data
->
lpdiaf
->
dwNumActions
);
data
->
original_lpdiaf
->
rgoAction
=
malloc
(
sizeof
(
DIACTIONW
)
*
data
->
lpdiaf
->
dwNumActions
);
copy_actions
(
data
->
original_lpdiaf
,
data
->
lpdiaf
);
/* Select the first device and show its actions */
...
...
dlls/dinput/device.c
View file @
f5b32121
...
...
@@ -436,11 +436,11 @@ static void release_DataFormat( DataFormat *format )
{
TRACE
(
"Deleting DataFormat: %p
\n
"
,
format
);
HeapFree
(
GetProcessHeap
(),
0
,
format
->
dt
);
free
(
format
->
dt
);
format
->
dt
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
format
->
offsets
);
free
(
format
->
offsets
);
format
->
offsets
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
format
->
user_df
);
free
(
format
->
user_df
);
format
->
user_df
=
NULL
;
}
...
...
@@ -483,15 +483,12 @@ static HRESULT create_DataFormat(LPCDIDATAFORMAT asked_format, DataFormat *forma
DWORD
next
=
0
;
if
(
!
format
->
wine_df
)
return
DIERR_INVALIDPARAM
;
done
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
asked_format
->
dwNumObjs
*
sizeof
(
int
)
);
dt
=
HeapAlloc
(
GetProcessHeap
(),
0
,
asked_format
->
dwNumObjs
*
sizeof
(
DataTransform
)
);
done
=
calloc
(
asked_format
->
dwNumObjs
,
sizeof
(
int
)
);
dt
=
malloc
(
asked_format
->
dwNumObjs
*
sizeof
(
DataTransform
)
);
if
(
!
dt
||
!
done
)
goto
failed
;
if
(
!
(
format
->
offsets
=
HeapAlloc
(
GetProcessHeap
(),
0
,
format
->
wine_df
->
dwNumObjs
*
sizeof
(
int
))))
goto
failed
;
if
(
!
(
format
->
user_df
=
HeapAlloc
(
GetProcessHeap
(),
0
,
asked_format
->
dwSize
)))
goto
failed
;
if
(
!
(
format
->
offsets
=
malloc
(
format
->
wine_df
->
dwNumObjs
*
sizeof
(
int
)
)))
goto
failed
;
if
(
!
(
format
->
user_df
=
malloc
(
asked_format
->
dwSize
)))
goto
failed
;
memcpy
(
format
->
user_df
,
asked_format
,
asked_format
->
dwSize
);
TRACE
(
"Creating DataTransform :
\n
"
);
...
...
@@ -595,22 +592,22 @@ static HRESULT create_DataFormat(LPCDIDATAFORMAT asked_format, DataFormat *forma
format
->
internal_format_size
=
format
->
wine_df
->
dwDataSize
;
format
->
size
=
index
;
if
(
same
)
{
HeapFree
(
GetProcessHeap
(),
0
,
dt
);
free
(
dt
);
dt
=
NULL
;
}
format
->
dt
=
dt
;
HeapFree
(
GetProcessHeap
(),
0
,
done
);
free
(
done
);
return
DI_OK
;
failed:
HeapFree
(
GetProcessHeap
(),
0
,
done
);
HeapFree
(
GetProcessHeap
(),
0
,
dt
);
free
(
done
);
free
(
dt
);
format
->
dt
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
format
->
offsets
);
free
(
format
->
offsets
);
format
->
offsets
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
format
->
user_df
);
free
(
format
->
user_df
);
format
->
user_df
=
NULL
;
return
DIERR_OUTOFMEMORY
;
...
...
@@ -691,14 +688,14 @@ static HKEY get_mapping_key(const WCHAR *device, const WCHAR *username, const WC
WCHAR
*
keyname
;
SIZE_T
len
=
wcslen
(
subkey
)
+
wcslen
(
username
)
+
wcslen
(
device
)
+
wcslen
(
guid
)
+
1
;
keyname
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
WCHAR
)
*
len
);
keyname
=
malloc
(
sizeof
(
WCHAR
)
*
len
);
swprintf
(
keyname
,
len
,
subkey
,
username
,
device
,
guid
);
/* The key used is HKCU\Software\Wine\DirectInput\Mappings\[username]\[device]\[mapping_guid] */
if
(
RegCreateKeyW
(
HKEY_CURRENT_USER
,
keyname
,
&
hkey
))
hkey
=
0
;
HeapFree
(
GetProcessHeap
(),
0
,
keyname
);
free
(
keyname
);
return
hkey
;
}
...
...
@@ -798,7 +795,7 @@ static BOOL set_app_data(IDirectInputDeviceImpl *dev, int offset, UINT_PTR app_d
if
(
num_actions
==
0
)
{
num_actions
=
1
;
action_map
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
ActionMap
)
);
action_map
=
malloc
(
sizeof
(
ActionMap
)
);
if
(
!
action_map
)
return
FALSE
;
target_map
=
&
action_map
[
0
];
}
...
...
@@ -815,7 +812,7 @@ static BOOL set_app_data(IDirectInputDeviceImpl *dev, int offset, UINT_PTR app_d
if
(
!
target_map
)
{
num_actions
++
;
action_map
=
HeapReAlloc
(
GetProcessHeap
(),
0
,
action_map
,
sizeof
(
ActionMap
)
*
num_actions
);
action_map
=
realloc
(
action_map
,
sizeof
(
ActionMap
)
*
num_actions
);
if
(
!
action_map
)
return
FALSE
;
target_map
=
&
action_map
[
num_actions
-
1
];
}
...
...
@@ -921,11 +918,11 @@ HRESULT _set_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, L
if
(
num_actions
==
0
)
return
DI_NOEFFECT
;
/* Construct the dataformat and actionmap */
obj_df
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
DIOBJECTDATAFORMAT
)
*
num_actions
);
obj_df
=
malloc
(
sizeof
(
DIOBJECTDATAFORMAT
)
*
num_actions
);
data_format
.
rgodf
=
(
LPDIOBJECTDATAFORMAT
)
obj_df
;
data_format
.
dwNumObjs
=
num_actions
;
action_map
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
ActionMap
)
*
num_actions
);
action_map
=
malloc
(
sizeof
(
ActionMap
)
*
num_actions
);
for
(
i
=
0
;
i
<
lpdiaf
->
dwNumActions
;
i
++
)
{
...
...
@@ -956,7 +953,7 @@ HRESULT _set_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, L
This
->
action_map
=
action_map
;
This
->
num_actions
=
num_actions
;
HeapFree
(
GetProcessHeap
(),
0
,
obj_df
);
free
(
obj_df
);
/* Set the device properties according to the action format */
dpr
.
diph
.
dwSize
=
sizeof
(
DIPROPRANGE
);
...
...
@@ -1121,7 +1118,7 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetDataFormat(LPDIRECTINPUTDEVICE8W ifac
EnterCriticalSection
(
&
This
->
crit
);
HeapFree
(
GetProcessHeap
(),
0
,
This
->
action_map
);
free
(
This
->
action_map
);
This
->
action_map
=
NULL
;
This
->
num_actions
=
0
;
...
...
@@ -1208,21 +1205,21 @@ ULONG WINAPI IDirectInputDevice2WImpl_Release(LPDIRECTINPUTDEVICE8W iface)
/* Reset the FF state, free all effects, etc */
IDirectInputDevice8_SendForceFeedbackCommand
(
iface
,
DISFFC_RESET
);
HeapFree
(
GetProcessHeap
(),
0
,
This
->
data_queue
);
free
(
This
->
data_queue
);
/* Free data format */
HeapFree
(
GetProcessHeap
(),
0
,
This
->
data_format
.
wine_df
->
rgodf
);
HeapFree
(
GetProcessHeap
(),
0
,
This
->
data_format
.
wine_df
);
free
(
This
->
data_format
.
wine_df
->
rgodf
);
free
(
This
->
data_format
.
wine_df
);
release_DataFormat
(
&
This
->
data_format
);
/* Free action mapping */
HeapFree
(
GetProcessHeap
(),
0
,
This
->
action_map
);
free
(
This
->
action_map
);
IDirectInput_Release
(
&
This
->
dinput
->
IDirectInput7A_iface
);
This
->
crit
.
DebugInfo
->
Spare
[
0
]
=
0
;
DeleteCriticalSection
(
&
This
->
crit
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
free
(
This
);
return
ref
;
}
...
...
@@ -1405,10 +1402,9 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetProperty(
This
->
buffersize
=
pd
->
dwData
;
This
->
queue_len
=
min
(
This
->
buffersize
,
1024
);
HeapFree
(
GetProcessHeap
(),
0
,
This
->
data_queue
);
free
(
This
->
data_queue
);
This
->
data_queue
=
!
This
->
queue_len
?
NULL
:
HeapAlloc
(
GetProcessHeap
(),
0
,
This
->
queue_len
*
sizeof
(
DIDEVICEOBJECTDATA
));
This
->
data_queue
=
This
->
queue_len
?
malloc
(
This
->
queue_len
*
sizeof
(
DIDEVICEOBJECTDATA
)
)
:
NULL
;
This
->
queue_head
=
This
->
queue_tail
=
This
->
overflow
=
0
;
LeaveCriticalSection
(
&
This
->
crit
);
...
...
@@ -1431,8 +1427,7 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetProperty(
break
;
}
}
if
(
!
found
&&
(
device_player
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
struct
DevicePlayer
))))
if
(
!
found
&&
(
device_player
=
malloc
(
sizeof
(
struct
DevicePlayer
)
)))
{
list_add_tail
(
&
This
->
dinput
->
device_players
,
&
device_player
->
entry
);
device_player
->
instance_guid
=
This
->
guid
;
...
...
@@ -1734,10 +1729,10 @@ HRESULT direct_input_device_alloc( SIZE_T size, const IDirectInputDevice8WVtbl *
IDirectInputDeviceImpl
*
This
;
DIDATAFORMAT
*
format
;
if
(
!
(
This
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
size
)))
return
DIERR_OUTOFMEMORY
;
if
(
!
(
format
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
*
format
)
)))
if
(
!
(
This
=
calloc
(
1
,
size
)))
return
DIERR_OUTOFMEMORY
;
if
(
!
(
format
=
calloc
(
1
,
sizeof
(
*
format
)
)))
{
HeapFree
(
GetProcessHeap
(),
0
,
This
);
free
(
This
);
return
DIERR_OUTOFMEMORY
;
}
...
...
dlls/dinput/dinput_main.c
View file @
f5b32121
...
...
@@ -121,7 +121,7 @@ void dinput_hooks_unacquire_device(LPDIRECTINPUTDEVICE8W iface)
static
HRESULT
create_directinput_instance
(
REFIID
riid
,
LPVOID
*
ppDI
,
IDirectInputImpl
**
out
)
{
IDirectInputImpl
*
This
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IDirectInputImpl
)
);
IDirectInputImpl
*
This
=
calloc
(
1
,
sizeof
(
IDirectInputImpl
)
);
HRESULT
hr
;
if
(
!
This
)
...
...
@@ -136,7 +136,7 @@ static HRESULT create_directinput_instance(REFIID riid, LPVOID *ppDI, IDirectInp
hr
=
IDirectInput_QueryInterface
(
&
This
->
IDirectInput7A_iface
,
riid
,
ppDI
);
if
(
FAILED
(
hr
))
{
HeapFree
(
GetProcessHeap
(),
0
,
This
);
free
(
This
);
return
hr
;
}
...
...
@@ -412,7 +412,7 @@ static ULONG WINAPI IDirectInputWImpl_Release( IDirectInput7W *iface )
if
(
ref
==
0
)
{
uninitialize_directinput_instance
(
This
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
free
(
This
);
}
return
ref
;
...
...
@@ -547,7 +547,7 @@ static void uninitialize_directinput_instance(IDirectInputImpl *This)
LIST_FOR_EACH_ENTRY_SAFE
(
device_player
,
device_player2
,
&
This
->
device_players
,
struct
DevicePlayer
,
entry
)
HeapFree
(
GetProcessHeap
(),
0
,
device_player
);
free
(
device_player
);
check_hook_thread
();
...
...
@@ -833,10 +833,7 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
if
(
enumSuccess
==
S_OK
&&
should_enumerate_device
(
ptszUserName
,
dwFlags
,
&
This
->
device_players
,
&
didevi
.
guidInstance
))
{
if
(
device_count
++
)
didevis
=
HeapReAlloc
(
GetProcessHeap
(),
0
,
didevis
,
sizeof
(
DIDEVICEINSTANCEW
)
*
device_count
);
else
didevis
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
DIDEVICEINSTANCEW
)
*
device_count
);
didevis
=
realloc
(
didevis
,
sizeof
(
DIDEVICEINSTANCEW
)
*
device_count
++
);
didevis
[
device_count
-
1
]
=
didevi
;
}
}
...
...
@@ -860,14 +857,14 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
if
(
lpCallback
(
&
didevis
[
i
],
lpdid
,
callbackFlags
,
--
remain
,
pvRef
)
==
DIENUM_STOP
)
{
HeapFree
(
GetProcessHeap
(),
0
,
didevis
);
free
(
didevis
);
IDirectInputDevice_Release
(
lpdid
);
return
DI_OK
;
}
IDirectInputDevice_Release
(
lpdid
);
}
HeapFree
(
GetProcessHeap
(),
0
,
didevis
);
free
(
didevis
);
if
(
dwFlags
&
DIEDBSFL_FORCEFEEDBACK
)
return
DI_OK
;
...
...
dlls/dinput/joystick_hid.c
View file @
f5b32121
...
...
@@ -593,10 +593,10 @@ static ULONG hid_joystick_private_decref( struct hid_joystick *impl )
if
(
!
(
ref
=
IDirectInputDevice2WImpl_Release
(
&
impl
->
base
.
IDirectInputDevice8W_iface
)))
{
HeapFree
(
GetProcessHeap
(),
0
,
tmp
.
usages_buf
);
HeapFree
(
GetProcessHeap
(),
0
,
tmp
.
output_report_buf
);
HeapFree
(
GetProcessHeap
(),
0
,
tmp
.
input_report_buf
);
HeapFree
(
GetProcessHeap
(),
0
,
tmp
.
input_extra_caps
);
free
(
tmp
.
usages_buf
);
free
(
tmp
.
output_report_buf
);
free
(
tmp
.
input_report_buf
);
free
(
tmp
.
input_extra_caps
);
HidD_FreePreparsedData
(
tmp
.
preparsed
);
CloseHandle
(
tmp
.
base
.
read_event
);
CloseHandle
(
tmp
.
device
);
...
...
@@ -2287,18 +2287,18 @@ static HRESULT hid_joystick_create_device( IDirectInputImpl *dinput, const GUID
preparsed
=
(
struct
hid_preparsed_data
*
)
impl
->
preparsed
;
size
=
preparsed
->
input_caps_count
*
sizeof
(
struct
extra_caps
);
if
(
!
(
extra
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
size
)))
goto
failed
;
if
(
!
(
extra
=
calloc
(
1
,
size
)))
goto
failed
;
impl
->
input_extra_caps
=
extra
;
size
=
impl
->
caps
.
InputReportByteLength
;
if
(
!
(
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
)))
goto
failed
;
if
(
!
(
buffer
=
malloc
(
size
)))
goto
failed
;
impl
->
input_report_buf
=
buffer
;
size
=
impl
->
caps
.
OutputReportByteLength
;
if
(
!
(
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
)))
goto
failed
;
if
(
!
(
buffer
=
malloc
(
size
)))
goto
failed
;
impl
->
output_report_buf
=
buffer
;
impl
->
usages_count
=
HidP_MaxUsageListLength
(
HidP_Input
,
0
,
impl
->
preparsed
);
size
=
impl
->
usages_count
*
sizeof
(
USAGE_AND_PAGE
);
if
(
!
(
usages
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
)))
goto
failed
;
if
(
!
(
usages
=
malloc
(
size
)))
goto
failed
;
impl
->
usages_buf
=
usages
;
enum_objects
(
impl
,
&
filter
,
DIDFT_ALL
,
init_objects
,
NULL
);
...
...
@@ -2350,7 +2350,7 @@ static HRESULT hid_joystick_create_device( IDirectInputImpl *dinput, const GUID
}
size
=
format
->
dwNumObjs
*
sizeof
(
*
format
->
rgodf
);
if
(
!
(
format
->
rgodf
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
size
)))
goto
failed
;
if
(
!
(
format
->
rgodf
=
calloc
(
1
,
size
)))
goto
failed
;
format
->
dwSize
=
sizeof
(
*
format
);
format
->
dwObjSize
=
sizeof
(
*
format
->
rgodf
);
format
->
dwFlags
=
DIDF_ABSAXIS
;
...
...
@@ -2419,11 +2419,11 @@ static ULONG WINAPI hid_joystick_effect_Release( IDirectInputEffect *iface )
list_remove
(
&
impl
->
entry
);
LeaveCriticalSection
(
&
impl
->
joystick
->
base
.
crit
);
hid_joystick_private_decref
(
impl
->
joystick
);
HeapFree
(
GetProcessHeap
(),
0
,
impl
->
type_specific_buf
[
1
]
);
HeapFree
(
GetProcessHeap
(),
0
,
impl
->
type_specific_buf
[
0
]
);
HeapFree
(
GetProcessHeap
(),
0
,
impl
->
effect_update_buf
);
HeapFree
(
GetProcessHeap
(),
0
,
impl
->
effect_control_buf
);
HeapFree
(
GetProcessHeap
(),
0
,
impl
);
free
(
impl
->
type_specific_buf
[
1
]
);
free
(
impl
->
type_specific_buf
[
0
]
);
free
(
impl
->
effect_update_buf
);
free
(
impl
->
effect_control_buf
);
free
(
impl
);
}
return
ref
;
}
...
...
@@ -3251,8 +3251,7 @@ static HRESULT hid_joystick_effect_create( struct hid_joystick *joystick, IDirec
struct
hid_joystick_effect
*
impl
;
ULONG
report_len
;
if
(
!
(
impl
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
*
impl
)
)))
return
DIERR_OUTOFMEMORY
;
if
(
!
(
impl
=
calloc
(
1
,
sizeof
(
*
impl
)
)))
return
DIERR_OUTOFMEMORY
;
impl
->
IDirectInputEffect_iface
.
lpVtbl
=
&
hid_joystick_effect_vtbl
;
impl
->
ref
=
1
;
impl
->
joystick
=
joystick
;
...
...
@@ -3263,10 +3262,10 @@ static HRESULT hid_joystick_effect_create( struct hid_joystick *joystick, IDirec
LeaveCriticalSection
(
&
joystick
->
base
.
crit
);
report_len
=
joystick
->
caps
.
OutputReportByteLength
;
if
(
!
(
impl
->
effect_control_buf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
report_len
)))
goto
failed
;
if
(
!
(
impl
->
effect_update_buf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
report_len
)))
goto
failed
;
if
(
!
(
impl
->
type_specific_buf
[
0
]
=
HeapAlloc
(
GetProcessHeap
(),
0
,
report_len
)))
goto
failed
;
if
(
!
(
impl
->
type_specific_buf
[
1
]
=
HeapAlloc
(
GetProcessHeap
(),
0
,
report_len
)))
goto
failed
;
if
(
!
(
impl
->
effect_control_buf
=
malloc
(
report_len
)))
goto
failed
;
if
(
!
(
impl
->
effect_update_buf
=
malloc
(
report_len
)))
goto
failed
;
if
(
!
(
impl
->
type_specific_buf
[
0
]
=
malloc
(
report_len
)))
goto
failed
;
if
(
!
(
impl
->
type_specific_buf
[
1
]
=
malloc
(
report_len
)))
goto
failed
;
impl
->
envelope
.
dwSize
=
sizeof
(
DIENVELOPE
);
impl
->
params
.
dwSize
=
sizeof
(
DIEFFECT
);
...
...
dlls/dinput/keyboard.c
View file @
f5b32121
...
...
@@ -207,7 +207,7 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysKeyboar
/* Create copy of default data format */
memcpy
(
df
,
&
c_dfDIKeyboard
,
c_dfDIKeyboard
.
dwSize
);
if
(
!
(
df
->
rgodf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
df
->
dwNumObjs
*
df
->
dwObjSize
)))
goto
failed
;
if
(
!
(
df
->
rgodf
=
malloc
(
df
->
dwNumObjs
*
df
->
dwObjSize
)))
goto
failed
;
for
(
i
=
0
;
i
<
df
->
dwNumObjs
;
i
++
)
{
...
...
@@ -227,9 +227,9 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysKeyboar
return
DI_OK
;
failed:
if
(
df
)
HeapFree
(
GetProcessHeap
(),
0
,
df
->
rgodf
);
HeapFree
(
GetProcessHeap
(),
0
,
df
);
HeapFree
(
GetProcessHeap
(),
0
,
newDevice
);
if
(
df
)
free
(
df
->
rgodf
);
free
(
df
);
free
(
newDevice
);
return
DIERR_OUTOFMEMORY
;
}
...
...
dlls/dinput/mouse.c
View file @
f5b32121
...
...
@@ -161,7 +161,7 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysMouseIm
/* Create copy of default data format */
memcpy
(
df
,
&
c_dfDIMouse2
,
c_dfDIMouse2
.
dwSize
);
if
(
!
(
df
->
rgodf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
df
->
dwNumObjs
*
df
->
dwObjSize
)))
goto
failed
;
if
(
!
(
df
->
rgodf
=
malloc
(
df
->
dwNumObjs
*
df
->
dwObjSize
)))
goto
failed
;
memcpy
(
df
->
rgodf
,
c_dfDIMouse2
.
rgodf
,
df
->
dwNumObjs
*
df
->
dwObjSize
);
/* Because we don't do any detection yet just modify instance and type */
...
...
@@ -182,9 +182,9 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysMouseIm
return
DI_OK
;
failed:
if
(
df
)
HeapFree
(
GetProcessHeap
(),
0
,
df
->
rgodf
);
HeapFree
(
GetProcessHeap
(),
0
,
df
);
HeapFree
(
GetProcessHeap
(),
0
,
newDevice
);
if
(
df
)
free
(
df
->
rgodf
);
free
(
df
);
free
(
newDevice
);
return
DIERR_OUTOFMEMORY
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment