dinput: Use msvcrt memory allocation functions.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Rémi Bernon 2021-10-11 10:11:00 +02:00 committed by Alexandre Julliard
parent 87c7f1bdce
commit f5b32121b1
7 changed files with 95 additions and 100 deletions

View File

@ -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;
}

View File

@ -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 */

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}