From: Zebediah Figura zfigura@codeweavers.com
This also has the effect of consistently zero-initializing the wined3d_output structure.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53497 --- dlls/wined3d/directx.c | 14 ++------------ dlls/wined3d/wined3d_private.h | 2 +- 2 files changed, 3 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 0444f76a5c6..fa4432a5dd8 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -3409,21 +3409,11 @@ static struct wined3d_adapter *wined3d_adapter_no3d_create(unsigned int ordinal,
static BOOL wined3d_adapter_create_output(struct wined3d_adapter *adapter, const WCHAR *output_name) { - struct wined3d_output *outputs; HRESULT hr;
- if (!adapter->outputs && !(adapter->outputs = heap_calloc(1, sizeof(*adapter->outputs)))) - { + if (!wined3d_array_reserve((void **)&adapter->outputs, &adapter->outputs_size, + adapter->output_count + 1, sizeof(*adapter->outputs))) return FALSE; - } - else - { - if (!(outputs = heap_realloc(adapter->outputs, - sizeof(*adapter->outputs) * (adapter->output_count + 1)))) - return FALSE; - - adapter->outputs = outputs; - }
if (FAILED(hr = wined3d_output_init(&adapter->outputs[adapter->output_count], adapter->output_count, adapter, output_name))) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 95af2775dfe..1dbd90067f5 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -3525,7 +3525,7 @@ struct wined3d_adapter struct wined3d_d3d_info d3d_info; struct wined3d_driver_info driver_info; struct wined3d_output *outputs; - unsigned int output_count; + SIZE_T output_count, outputs_size; D3DKMT_HANDLE kmt_adapter; UINT64 vram_bytes_used; GUID driver_uuid;