Rebase against fddb79776871ee00adf4d78583135a5d96ca8c06.

This commit is contained in:
Alistair Leslie-Hughes 2023-07-28 08:02:08 +10:00
parent 1942fb8bc1
commit 390b1f4127
5 changed files with 40 additions and 101 deletions

View File

@ -1,18 +1,18 @@
From 8348f9700da32b1d21f7fab70697ce65414ade4b Mon Sep 17 00:00:00 2001
From bae2039e857a7304d26bbdf4f2e7ba30c4203ee7 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 16 Dec 2016 18:08:51 +0800
Subject: [PATCH] windowscodecs: Tolerate partial reads in the IFD metadata
loader.
---
dlls/windowscodecs/metadatahandler.c | 51 ++++++++++++----------------
1 file changed, 22 insertions(+), 29 deletions(-)
dlls/windowscodecs/metadatahandler.c | 37 +++++++++++-----------------
1 file changed, 15 insertions(+), 22 deletions(-)
diff --git a/dlls/windowscodecs/metadatahandler.c b/dlls/windowscodecs/metadatahandler.c
index 128514f6a31..847a097d479 100644
index 6d519c0f3cd..3960beac954 100644
--- a/dlls/windowscodecs/metadatahandler.c
+++ b/dlls/windowscodecs/metadatahandler.c
@@ -716,7 +716,7 @@ static int tag_to_vt(SHORT tag)
@@ -720,7 +720,7 @@ static int tag_to_vt(SHORT tag)
static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
MetadataItem *item, BOOL native_byte_order)
{
@ -21,26 +21,8 @@ index 128514f6a31..847a097d479 100644
SHORT type;
LARGE_INTEGER pos;
HRESULT hr;
@@ -750,7 +750,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
{
item->value.vt |= VT_VECTOR;
item->value.caub.cElems = count;
- item->value.caub.pElems = HeapAlloc(GetProcessHeap(), 0, count);
+ item->value.caub.pElems = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count);
memcpy(item->value.caub.pElems, data, count);
}
break;
@@ -758,7 +758,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
item->value.vt |= VT_VECTOR;
item->value.caub.cElems = count;
- item->value.caub.pElems = HeapAlloc(GetProcessHeap(), 0, count);
+ item->value.caub.pElems = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count);
if (!item->value.caub.pElems) return E_OUTOFMEMORY;
pos.QuadPart = value;
@@ -768,9 +768,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
HeapFree(GetProcessHeap(), 0, item->value.caub.pElems);
@@ -772,9 +772,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
CoTaskMemFree(item->value.caub.pElems);
return hr;
}
- hr = IStream_Read(input, item->value.caub.pElems, count, &bytesread);
@ -49,28 +31,19 @@ index 128514f6a31..847a097d479 100644
+ hr = IStream_Read(input, item->value.caub.pElems, count, NULL);
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, item->value.caub.pElems);
CoTaskMemFree(item->value.caub.pElems);
return hr;
@@ -793,7 +792,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
{
item->value.vt |= VT_VECTOR;
item->value.caui.cElems = count;
- item->value.caui.pElems = HeapAlloc(GetProcessHeap(), 0, count * 2);
+ item->value.caui.pElems = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count * 2);
memcpy(item->value.caui.pElems, data, count * 2);
for (i = 0; i < count; i++)
SWAP_USHORT(item->value.caui.pElems[i]);
@@ -803,7 +802,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
@@ -807,7 +806,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
item->value.vt |= VT_VECTOR;
item->value.caui.cElems = count;
- item->value.caui.pElems = HeapAlloc(GetProcessHeap(), 0, count * 2);
- item->value.caui.pElems = CoTaskMemAlloc(count * 2);
+ item->value.caui.pElems = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count * 2);
if (!item->value.caui.pElems) return E_OUTOFMEMORY;
pos.QuadPart = value;
@@ -813,9 +812,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
HeapFree(GetProcessHeap(), 0, item->value.caui.pElems);
@@ -817,9 +816,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
CoTaskMemFree(item->value.caui.pElems);
return hr;
}
- hr = IStream_Read(input, item->value.caui.pElems, count * 2, &bytesread);
@ -79,19 +52,10 @@ index 128514f6a31..847a097d479 100644
+ hr = IStream_Read(input, item->value.caui.pElems, count * 2, NULL);
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, item->value.caui.pElems);
CoTaskMemFree(item->value.caui.pElems);
return hr;
@@ -836,7 +834,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
item->value.vt |= VT_VECTOR;
item->value.caul.cElems = count;
- item->value.caul.pElems = HeapAlloc(GetProcessHeap(), 0, count * 4);
+ item->value.caul.pElems = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count * 4);
if (!item->value.caul.pElems) return E_OUTOFMEMORY;
pos.QuadPart = value;
@@ -846,9 +844,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
HeapFree(GetProcessHeap(), 0, item->value.caul.pElems);
@@ -850,9 +848,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
CoTaskMemFree(item->value.caul.pElems);
return hr;
}
- hr = IStream_Read(input, item->value.caul.pElems, count * 4, &bytesread);
@ -100,9 +64,9 @@ index 128514f6a31..847a097d479 100644
+ hr = IStream_Read(input, item->value.caul.pElems, count * 4, NULL);
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, item->value.caul.pElems);
CoTaskMemFree(item->value.caul.pElems);
return hr;
@@ -874,8 +871,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
@@ -878,8 +875,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
hr = IStream_Seek(input, pos, SEEK_SET, NULL);
if (FAILED(hr)) return hr;
@ -112,17 +76,8 @@ index 128514f6a31..847a097d479 100644
if (hr != S_OK) return hr;
item->value.uhVal.QuadPart = ull;
@@ -893,7 +889,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
{
item->value.vt |= VT_VECTOR;
item->value.cauh.cElems = count;
- item->value.cauh.pElems = HeapAlloc(GetProcessHeap(), 0, count * 8);
+ item->value.cauh.pElems = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count * 8);
if (!item->value.cauh.pElems) return E_OUTOFMEMORY;
pos.QuadPart = value;
@@ -903,9 +899,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
HeapFree(GetProcessHeap(), 0, item->value.cauh.pElems);
@@ -907,9 +903,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
CoTaskMemFree(item->value.cauh.pElems);
return hr;
}
- hr = IStream_Read(input, item->value.cauh.pElems, count * 8, &bytesread);
@ -131,19 +86,10 @@ index 128514f6a31..847a097d479 100644
+ hr = IStream_Read(input, item->value.cauh.pElems, count * 8, NULL);
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, item->value.cauh.pElems);
CoTaskMemFree(item->value.cauh.pElems);
return hr;
@@ -923,7 +918,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
}
break;
case IFD_ASCII:
- item->value.pszVal = HeapAlloc(GetProcessHeap(), 0, count + 1);
+ item->value.pszVal = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count + 1);
if (!item->value.pszVal) return E_OUTOFMEMORY;
if (count <= 4)
@@ -941,9 +936,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
HeapFree(GetProcessHeap(), 0, item->value.pszVal);
@@ -945,9 +940,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
CoTaskMemFree(item->value.pszVal);
return hr;
}
- hr = IStream_Read(input, item->value.pszVal, count, &bytesread);
@ -152,19 +98,10 @@ index 128514f6a31..847a097d479 100644
+ hr = IStream_Read(input, item->value.pszVal, count, NULL);
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, item->value.pszVal);
CoTaskMemFree(item->value.pszVal);
return hr;
@@ -958,7 +952,7 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
break;
}
- item->value.blob.pBlobData = HeapAlloc(GetProcessHeap(), 0, count);
+ item->value.blob.pBlobData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count);
if (!item->value.blob.pBlobData) return E_OUTOFMEMORY;
item->value.blob.cbSize = count;
@@ -977,9 +971,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
HeapFree(GetProcessHeap(), 0, item->value.blob.pBlobData);
@@ -981,9 +975,8 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry,
CoTaskMemFree(item->value.blob.pBlobData);
return hr;
}
- hr = IStream_Read(input, item->value.blob.pBlobData, count, &bytesread);
@ -173,8 +110,8 @@ index 128514f6a31..847a097d479 100644
+ hr = IStream_Read(input, item->value.blob.pBlobData, count, NULL);
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, item->value.blob.pBlobData);
CoTaskMemFree(item->value.blob.pBlobData);
return hr;
--
2.30.2
2.40.1

View File

@ -1,2 +1,3 @@
Fixes: [39057] Support for Indexed Vertex Blending
Depends: wined3d-SWVP-shaders
Depends: wined3d-SWVP-shaders
Disabled: True

View File

@ -1 +1,2 @@
Fixes: [8051] Sims 2 demo exits prematurely
Disabled: True

View File

@ -1,4 +1,4 @@
From ce957e22bf43363a4e1d713f243bc062649013f0 Mon Sep 17 00:00:00 2001
From abbe2c0dc6db19cbf029c6d3c7fcf449503b9f99 Mon Sep 17 00:00:00 2001
From: Henri Verbeet <hverbeet@codeweavers.com>
Date: Fri, 28 Jun 2019 14:27:10 +1000
Subject: [PATCH] wined3d: Dont set DDSCAPS_FLIP for gdi renderer
@ -11,11 +11,11 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47419
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index d06cbbbab0d..74766f710ae 100644
index fc6c507f2b6..aa36a504f52 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -4310,6 +4310,7 @@ static void adapter_gl_get_wined3d_caps(const struct wined3d_adapter *adapter, s
const struct wined3d_gl_info *gl_info = &adapter->gl_info;
@@ -4327,6 +4327,7 @@ static void adapter_gl_get_wined3d_caps(const struct wined3d_adapter *adapter, s
const struct wined3d_d3d_info *d3d_info = &adapter->d3d_info;
caps->ddraw_caps.dds_caps |= WINEDDSCAPS_BACKBUFFER
+ | WINEDDSCAPS_FLIP
@ -23,10 +23,10 @@ index d06cbbbab0d..74766f710ae 100644
| WINEDDSCAPS_FRONTBUFFER
| WINEDDSCAPS_3DDEVICE
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index 9a226edc65a..e76fc840f67 100644
index a27e8e41d88..da3acdc572e 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -564,6 +564,7 @@ static void adapter_vk_get_wined3d_caps(const struct wined3d_adapter *adapter, s
@@ -504,6 +504,7 @@ static void adapter_vk_get_wined3d_caps(const struct wined3d_adapter *adapter, s
const struct wined3d_vk_info *vk_info = &adapter_vk->vk_info;
caps->ddraw_caps.dds_caps |= WINEDDSCAPS_BACKBUFFER
@ -35,10 +35,10 @@ index 9a226edc65a..e76fc840f67 100644
| WINEDDSCAPS_FRONTBUFFER
| WINEDDSCAPS_3DDEVICE
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 167220a2299..9e27a76b95c 100644
index 079dc70ad5b..b8fa53b10ac 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2409,8 +2409,7 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d_adapter *adapter,
@@ -2692,8 +2692,7 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d_adapter *adapter,
caps->ddraw_caps.ssb_color_key_caps = ckey_caps;
caps->ddraw_caps.ssb_fx_caps = fx_caps;
@ -49,5 +49,5 @@ index 167220a2299..9e27a76b95c 100644
| WINEDDSCAPS_PRIMARYSURFACE
| WINEDDSCAPS_TEXTURE
--
2.29.2
2.40.1

View File

@ -1 +1 @@
eac34b9c85e1d6da483eb64094fa0b316d1b01a5
fddb79776871ee00adf4d78583135a5d96ca8c06