You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
12d8b79c63 | ||
|
986a011548 | ||
|
2c08a980e8 | ||
|
9686fe6647 | ||
|
b013afa660 | ||
|
bdb212523c | ||
|
d4f26a2f95 | ||
|
1261a0540c | ||
|
577b85bdc8 | ||
|
96a6d1cecc | ||
|
a90497bdef | ||
|
b6c5b6240b | ||
|
9c43bb8d2c | ||
|
f06f5c3b0c | ||
|
b2098faef8 | ||
|
4b0fe0c820 | ||
|
604d23df7c | ||
|
e65410b901 | ||
|
7b4727f89c | ||
|
5f4b99aa18 | ||
|
73c19719e0 | ||
|
eaff208f0d | ||
|
77452f30f8 | ||
|
7ad3349f66 | ||
|
8c909daf10 | ||
|
51fd657cdb | ||
|
634b0e2877 | ||
|
2660a14433 | ||
|
ad5fb8a69e |
@@ -0,0 +1,156 @@
|
||||
From 3dc821fe683d1e17976ca9367465c1412e1140b4 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 14 Jan 2017 07:50:36 +0100
|
||||
Subject: d3d8: Improve ValidateVertexShader stub.
|
||||
|
||||
---
|
||||
dlls/d3d8/d3d8_main.c | 43 ++++++++++++++++++++++---------------------
|
||||
dlls/d3d8/tests/device.c | 40 +++++++++++++++++++++++++---------------
|
||||
2 files changed, 47 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
|
||||
index 8ac704c364c..2ab0414b7f2 100644
|
||||
--- a/dlls/d3d8/d3d8_main.c
|
||||
+++ b/dlls/d3d8/d3d8_main.c
|
||||
@@ -58,38 +58,39 @@ IDirect3D8 * WINAPI DECLSPEC_HOTPATCH Direct3DCreate8(UINT sdk_version)
|
||||
|
||||
/***********************************************************************
|
||||
* ValidateVertexShader (D3D8.@)
|
||||
- *
|
||||
- * I've seen reserved1 and reserved2 always passed as 0's
|
||||
- * bool seems always passed as 0 or 1, but other values work as well...
|
||||
- * toto result?
|
||||
*/
|
||||
-HRESULT WINAPI ValidateVertexShader(DWORD* vertexshader, DWORD* reserved1, DWORD* reserved2, BOOL bool, DWORD* toto)
|
||||
+HRESULT WINAPI ValidateVertexShader(DWORD *vertexshader, DWORD *reserved1, DWORD *reserved2,
|
||||
+ BOOL return_error, char **errors)
|
||||
{
|
||||
- HRESULT ret;
|
||||
- static BOOL warned;
|
||||
-
|
||||
- if (TRACE_ON(d3d8) || !warned) {
|
||||
- FIXME("(%p %p %p %d %p): stub\n", vertexshader, reserved1, reserved2, bool, toto);
|
||||
- warned = TRUE;
|
||||
- }
|
||||
+ const char *message = "";
|
||||
+ HRESULT hr = E_FAIL;
|
||||
|
||||
- if (!vertexshader)
|
||||
- return E_FAIL;
|
||||
+ TRACE("(%p %p %p %d %p): semi-stub\n", vertexshader, reserved1, reserved2, return_error, errors);
|
||||
|
||||
- if (reserved1 || reserved2)
|
||||
- return E_FAIL;
|
||||
+ if (!vertexshader)
|
||||
+ {
|
||||
+ message = "(Global Validation Error) Version Token: Code pointer cannot be NULL.\n";
|
||||
+ goto done;
|
||||
+ }
|
||||
|
||||
- switch(*vertexshader) {
|
||||
+ switch (*vertexshader)
|
||||
+ {
|
||||
case 0xFFFE0101:
|
||||
case 0xFFFE0100:
|
||||
- ret=S_OK;
|
||||
+ hr = S_OK;
|
||||
break;
|
||||
+
|
||||
default:
|
||||
WARN("Invalid shader version token %#x.\n", *vertexshader);
|
||||
- ret=E_FAIL;
|
||||
- }
|
||||
+ message = "(Global Validation Error) Version Token: Unsupported vertex shader version.\n";
|
||||
+ }
|
||||
|
||||
- return ret;
|
||||
+done:
|
||||
+ if (!return_error) message = "";
|
||||
+ if (errors && (*errors = HeapAlloc(GetProcessHeap(), 0, strlen(message) + 1)))
|
||||
+ strcpy(*errors, message);
|
||||
+
|
||||
+ return hr;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
|
||||
index 28c6af32e0c..1368ce3a2cf 100644
|
||||
--- a/dlls/d3d8/tests/device.c
|
||||
+++ b/dlls/d3d8/tests/device.c
|
||||
@@ -50,7 +50,7 @@ struct device_desc
|
||||
|
||||
static DEVMODEW registry_mode;
|
||||
|
||||
-static HRESULT (WINAPI *ValidateVertexShader)(DWORD *, DWORD *, DWORD *, int, DWORD *);
|
||||
+static HRESULT (WINAPI *ValidateVertexShader)(DWORD *, DWORD *, DWORD *, BOOL, char **);
|
||||
static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, int, DWORD *);
|
||||
|
||||
static BOOL (WINAPI *pGetCursorInfo)(PCURSORINFO);
|
||||
@@ -4238,18 +4238,31 @@ static void test_validate_vs(void)
|
||||
0x00000009, 0xc0080000, 0x90e40000, 0xa0e40003, /* dp4 oPos.w, v0, c3 */
|
||||
0x0000ffff, /* end */
|
||||
};
|
||||
+ char *errors;
|
||||
HRESULT hr;
|
||||
|
||||
hr = ValidateVertexShader(0, 0, 0, 0, 0);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
hr = ValidateVertexShader(0, 0, 0, 1, 0);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidateVertexShader(0, 0, 0, 0, &errors);
|
||||
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
|
||||
+ HeapFree(GetProcessHeap(), 0, errors);
|
||||
+
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidateVertexShader(0, 0, 0, 1, &errors);
|
||||
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
|
||||
+ HeapFree(GetProcessHeap(), 0, errors);
|
||||
+
|
||||
hr = ValidateVertexShader(vs, 0, 0, 0, 0);
|
||||
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
-
|
||||
hr = ValidateVertexShader(vs, 0, 0, 1, 0);
|
||||
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
- /* Seems to do some version checking. */
|
||||
+
|
||||
*vs = 0xfffe0100; /* vs_1_0 */
|
||||
hr = ValidateVertexShader(vs, 0, 0, 0, 0);
|
||||
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
@@ -4257,21 +4270,18 @@ static void test_validate_vs(void)
|
||||
*vs = 0xfffe0102; /* bogus version */
|
||||
hr = ValidateVertexShader(vs, 0, 0, 1, 0);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
- /* I've seen that applications always pass the 2nd and 3rd parameter as 0.
|
||||
- * Simple test with non-zero parameters. */
|
||||
- *vs = 0xfffe0101; /* vs_1_1 */
|
||||
- hr = ValidateVertexShader(vs, vs, 0, 1, 0);
|
||||
+
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidateVertexShader(vs, 0, 0, 0, &errors);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
|
||||
+ HeapFree(GetProcessHeap(), 0, errors);
|
||||
|
||||
- hr = ValidateVertexShader(vs, 0, vs, 1, 0);
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidateVertexShader(vs, 0, 0, 1, &errors);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
- /* I've seen the 4th parameter always passed as either 0 or 1, but passing
|
||||
- * other values doesn't seem to hurt. */
|
||||
- hr = ValidateVertexShader(vs, 0, 0, 12345, 0);
|
||||
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
- /* What is the 5th parameter? The following seems to work ok. */
|
||||
- hr = ValidateVertexShader(vs, 0, 0, 1, vs);
|
||||
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
|
||||
+ HeapFree(GetProcessHeap(), 0, errors);
|
||||
}
|
||||
|
||||
static void test_validate_ps(void)
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,140 @@
|
||||
From 29d2dd7606178f391c8802f8d5767a7bd83c4e30 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 14 Jan 2017 07:54:39 +0100
|
||||
Subject: d3d8: Improve ValidatePixelShader stub.
|
||||
|
||||
---
|
||||
dlls/d3d8/d3d8_main.c | 37 +++++++++++++++++--------------------
|
||||
dlls/d3d8/tests/device.c | 34 ++++++++++++++++++++--------------
|
||||
2 files changed, 37 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
|
||||
index a562c1c7e30..41f411c30a8 100644
|
||||
--- a/dlls/d3d8/d3d8_main.c
|
||||
+++ b/dlls/d3d8/d3d8_main.c
|
||||
@@ -101,39 +101,36 @@ done:
|
||||
|
||||
/***********************************************************************
|
||||
* ValidatePixelShader (D3D8.@)
|
||||
- *
|
||||
- * PARAMS
|
||||
- * toto result?
|
||||
*/
|
||||
-HRESULT WINAPI ValidatePixelShader(DWORD* pixelshader, DWORD* reserved1, BOOL bool, DWORD* toto)
|
||||
+HRESULT WINAPI ValidatePixelShader(DWORD *pixelshader, DWORD *reserved1, BOOL return_error, char **errors)
|
||||
{
|
||||
- HRESULT ret;
|
||||
- static BOOL warned;
|
||||
-
|
||||
- if (TRACE_ON(d3d8) || !warned) {
|
||||
- FIXME("(%p %p %d %p): stub\n", pixelshader, reserved1, bool, toto);
|
||||
- warned = TRUE;
|
||||
- }
|
||||
+ const char *message = "";
|
||||
+ HRESULT hr = E_FAIL;
|
||||
|
||||
- if (!pixelshader)
|
||||
- return E_FAIL;
|
||||
+ TRACE("(%p %p %d %p): semi-stub\n", pixelshader, reserved1, return_error, errors);
|
||||
|
||||
- if (reserved1)
|
||||
- return E_FAIL;
|
||||
+ if (!pixelshader)
|
||||
+ return E_FAIL;
|
||||
|
||||
- switch(*pixelshader) {
|
||||
+ switch (*pixelshader)
|
||||
+ {
|
||||
case 0xFFFF0100:
|
||||
case 0xFFFF0101:
|
||||
case 0xFFFF0102:
|
||||
case 0xFFFF0103:
|
||||
case 0xFFFF0104:
|
||||
- ret=S_OK;
|
||||
+ hr = S_OK;
|
||||
break;
|
||||
default:
|
||||
WARN("Invalid shader version token %#x.\n", *pixelshader);
|
||||
- ret=E_FAIL;
|
||||
- }
|
||||
- return ret;
|
||||
+ message = "(Global Validation Error) Version Token: Unsupported pixel shader version.\n";
|
||||
+ }
|
||||
+
|
||||
+ if (!return_error) message = "";
|
||||
+ if (errors && (*errors = HeapAlloc(GetProcessHeap(), 0, strlen(message) + 1)))
|
||||
+ strcpy(*errors, message);
|
||||
+
|
||||
+ return hr;
|
||||
}
|
||||
|
||||
void d3d8_resource_cleanup(struct d3d8_resource *resource)
|
||||
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
|
||||
index 1368ce3a2cf..9ff3be71776 100644
|
||||
--- a/dlls/d3d8/tests/device.c
|
||||
+++ b/dlls/d3d8/tests/device.c
|
||||
@@ -51,7 +51,7 @@ struct device_desc
|
||||
static DEVMODEW registry_mode;
|
||||
|
||||
static HRESULT (WINAPI *ValidateVertexShader)(DWORD *, DWORD *, DWORD *, BOOL, char **);
|
||||
-static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, int, DWORD *);
|
||||
+static HRESULT (WINAPI *ValidatePixelShader)(DWORD *, DWORD *, BOOL, char **);
|
||||
|
||||
static BOOL (WINAPI *pGetCursorInfo)(PCURSORINFO);
|
||||
|
||||
@@ -4296,33 +4296,39 @@ static void test_validate_ps(void)
|
||||
0x00000005, 0x800f0000, 0xb0e40000, 0x80e40000, /* mul r0, t0, r0 */
|
||||
0x0000ffff, /* end */
|
||||
};
|
||||
+ char *errors;
|
||||
HRESULT hr;
|
||||
|
||||
hr = ValidatePixelShader(0, 0, 0, 0);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
hr = ValidatePixelShader(0, 0, 1, 0);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidatePixelShader(0, 0, 1, &errors);
|
||||
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(errors == (void *)0xdeadbeef, "Expected 0xdeadbeef, got %p.\n", errors);
|
||||
+
|
||||
hr = ValidatePixelShader(ps, 0, 0, 0);
|
||||
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
-
|
||||
hr = ValidatePixelShader(ps, 0, 1, 0);
|
||||
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
- /* Seems to do some version checking. */
|
||||
+
|
||||
*ps = 0xffff0105; /* bogus version */
|
||||
hr = ValidatePixelShader(ps, 0, 1, 0);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
- /* I've seen that applications always pass the 2nd parameter as 0.
|
||||
- * Simple test with a non-zero parameter. */
|
||||
- *ps = 0xffff0101; /* ps_1_1 */
|
||||
- hr = ValidatePixelShader(ps, ps, 1, 0);
|
||||
+
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidatePixelShader(ps, 0, 0, &errors);
|
||||
+ ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(!strcmp(errors, ""), "Got unexpected string '%s'.\n", errors);
|
||||
+ HeapFree(GetProcessHeap(), 0, errors);
|
||||
+
|
||||
+ errors = (void *)0xdeadbeef;
|
||||
+ hr = ValidatePixelShader(ps, 0, 1, &errors);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
- /* I've seen the 3rd parameter always passed as either 0 or 1, but passing
|
||||
- * other values doesn't seem to hurt. */
|
||||
- hr = ValidatePixelShader(ps, 0, 12345, 0);
|
||||
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
- /* What is the 4th parameter? The following seems to work ok. */
|
||||
- hr = ValidatePixelShader(ps, 0, 1, ps);
|
||||
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
|
||||
+ ok(strstr(errors, "Validation Error") != NULL, "Got unexpected string '%s'.\n", errors);
|
||||
+ HeapFree(GetProcessHeap(), 0, errors);
|
||||
}
|
||||
|
||||
static void test_volume_get_container(void)
|
||||
--
|
||||
2.11.0
|
||||
|
1
patches/d3d8-ValidateShader/definition
Normal file
1
patches/d3d8-ValidateShader/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [40036] Improve stubs for Validate{Vertex,Pixel}Shader
|
@@ -1,4 +1,4 @@
|
||||
From 445d3b9a3148598de7ff907429076d1551c419ec Mon Sep 17 00:00:00 2001
|
||||
From 746aa2c81af98e890e4db720783de7fce4bc84d3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 4 Mar 2016 22:22:42 +0100
|
||||
Subject: ddraw: Set ddsOldCaps correctly in ddraw7_GetCaps.
|
||||
@@ -12,7 +12,7 @@ Subject: ddraw: Set ddsOldCaps correctly in ddraw7_GetCaps.
|
||||
5 files changed, 106 insertions(+)
|
||||
|
||||
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
|
||||
index e50edb4..bac9b8a 100644
|
||||
index 1fa88751efe..5c138a5d726 100644
|
||||
--- a/dlls/ddraw/ddraw.c
|
||||
+++ b/dlls/ddraw/ddraw.c
|
||||
@@ -1533,6 +1533,8 @@ static HRESULT WINAPI ddraw7_GetCaps(IDirectDraw7 *iface, DDCAPS *DriverCaps, DD
|
||||
@@ -25,10 +25,10 @@ index e50edb4..bac9b8a 100644
|
||||
|
||||
if(DriverCaps)
|
||||
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
|
||||
index 1271022..de6697e 100644
|
||||
index 5b153a62a21..762c1074e79 100644
|
||||
--- a/dlls/ddraw/tests/ddraw1.c
|
||||
+++ b/dlls/ddraw/tests/ddraw1.c
|
||||
@@ -9612,6 +9612,31 @@ static void test_transform_vertices(void)
|
||||
@@ -9793,6 +9793,31 @@ static void test_display_mode_surface_pixel_format(void)
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
@@ -60,17 +60,17 @@ index 1271022..de6697e 100644
|
||||
START_TEST(ddraw1)
|
||||
{
|
||||
IDirectDraw *ddraw;
|
||||
@@ -9695,4 +9720,5 @@ START_TEST(ddraw1)
|
||||
test_blt();
|
||||
@@ -9877,4 +9902,5 @@ START_TEST(ddraw1)
|
||||
test_getdc();
|
||||
test_transform_vertices();
|
||||
test_display_mode_surface_pixel_format();
|
||||
+ test_caps();
|
||||
}
|
||||
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
|
||||
index bf012e4..b55eed8 100644
|
||||
index 422960012af..714d3f0e1a8 100644
|
||||
--- a/dlls/ddraw/tests/ddraw2.c
|
||||
+++ b/dlls/ddraw/tests/ddraw2.c
|
||||
@@ -10949,6 +10949,31 @@ static void test_transform_vertices(void)
|
||||
@@ -11247,6 +11247,31 @@ static void test_display_mode_surface_pixel_format(void)
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
@@ -102,17 +102,17 @@ index bf012e4..b55eed8 100644
|
||||
START_TEST(ddraw2)
|
||||
{
|
||||
IDirectDraw2 *ddraw;
|
||||
@@ -11041,4 +11066,5 @@ START_TEST(ddraw2)
|
||||
test_draw_primitive();
|
||||
@@ -11340,4 +11365,5 @@ START_TEST(ddraw2)
|
||||
test_edge_antialiasing_blending();
|
||||
test_transform_vertices();
|
||||
test_display_mode_surface_pixel_format();
|
||||
+ test_caps();
|
||||
}
|
||||
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
|
||||
index 9ac7a63..7b4bd3c 100644
|
||||
index e091a6dac5d..70dd79d7a13 100644
|
||||
--- a/dlls/ddraw/tests/ddraw4.c
|
||||
+++ b/dlls/ddraw/tests/ddraw4.c
|
||||
@@ -12246,6 +12246,31 @@ static void test_transform_vertices(void)
|
||||
@@ -12532,6 +12532,31 @@ static void test_display_mode_surface_pixel_format(void)
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
@@ -144,17 +144,17 @@ index 9ac7a63..7b4bd3c 100644
|
||||
START_TEST(ddraw4)
|
||||
{
|
||||
IDirectDraw4 *ddraw;
|
||||
@@ -12346,4 +12371,5 @@ START_TEST(ddraw4)
|
||||
test_draw_primitive();
|
||||
@@ -12633,4 +12658,5 @@ START_TEST(ddraw4)
|
||||
test_edge_antialiasing_blending();
|
||||
test_transform_vertices();
|
||||
test_display_mode_surface_pixel_format();
|
||||
+ test_caps();
|
||||
}
|
||||
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
|
||||
index d6dffc8..eafa93b 100644
|
||||
index 0b1bdaef6d2..536163e9a5e 100644
|
||||
--- a/dlls/ddraw/tests/ddraw7.c
|
||||
+++ b/dlls/ddraw/tests/ddraw7.c
|
||||
@@ -12104,6 +12104,31 @@ static void test_edge_antialiasing_blending(void)
|
||||
@@ -12211,6 +12211,31 @@ static void test_display_mode_surface_pixel_format(void)
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
@@ -186,12 +186,12 @@ index d6dffc8..eafa93b 100644
|
||||
START_TEST(ddraw7)
|
||||
{
|
||||
HMODULE module = GetModuleHandleA("ddraw.dll");
|
||||
@@ -12214,4 +12239,5 @@ START_TEST(ddraw7)
|
||||
test_getdc();
|
||||
@@ -12322,4 +12347,5 @@ START_TEST(ddraw7)
|
||||
test_draw_primitive();
|
||||
test_edge_antialiasing_blending();
|
||||
test_display_mode_surface_pixel_format();
|
||||
+ test_caps();
|
||||
}
|
||||
--
|
||||
2.9.0
|
||||
2.11.0
|
||||
|
||||
|
@@ -0,0 +1,25 @@
|
||||
From 2bec406f8c9a80d8bb7beef2a9cb39455be6b125 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 14 Jan 2017 23:06:28 +0100
|
||||
Subject: dsound: Respect return value of callback in DirectSoundEnumerateA/W.
|
||||
|
||||
---
|
||||
dlls/dsound/dsound_main.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c
|
||||
index db2ca506bda..2e12fe7a40d 100644
|
||||
--- a/dlls/dsound/dsound_main.c
|
||||
+++ b/dlls/dsound/dsound_main.c
|
||||
@@ -522,7 +522,7 @@ HRESULT enumerate_mmdevices(EDataFlow flow, GUID *guids,
|
||||
}
|
||||
|
||||
if(device != defdev){
|
||||
- send_device(device, &guids[n], cb, user);
|
||||
+ keep_going = send_device(device, &guids[n], cb, user);
|
||||
++n;
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
1
patches/dsound-enumerate_mmdevices/definition
Normal file
1
patches/dsound-enumerate_mmdevices/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [42163] Respect return value of callback in DirectSoundEnumerateA/W
|
@@ -0,0 +1,27 @@
|
||||
From 607d3969a3b2633ce4dd4f99f96d1666c15cd98d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 15 Jan 2017 22:52:09 +0100
|
||||
Subject: include: Avoid duplicate definition of REFERENCE_TIME.
|
||||
|
||||
---
|
||||
include/dmdls.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/include/dmdls.h b/include/dmdls.h
|
||||
index b40ef88bf8d..ea7dcf00946 100644
|
||||
--- a/include/dmdls.h
|
||||
+++ b/include/dmdls.h
|
||||
@@ -30,7 +30,10 @@ typedef LONG PCENT;
|
||||
typedef LONG PERCENT;
|
||||
typedef LONG TCENT;
|
||||
|
||||
+#ifndef REFERENCE_TIME_DEFINED
|
||||
+#define REFERENCE_TIME_DEFINED
|
||||
typedef LONGLONG REFERENCE_TIME, *LPREFERENCE_TIME;
|
||||
+#endif
|
||||
|
||||
/*****************************************************************************
|
||||
* FOURCC definition
|
||||
--
|
||||
2.11.0
|
||||
|
1
patches/include-Duplicate_Typedef/definition
Normal file
1
patches/include-Duplicate_Typedef/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [42211] Avoid duplicate definition of REFERENCE_TIME
|
@@ -0,0 +1,24 @@
|
||||
From efdcaba02d66b65177ce73686f4d4b5fb8f6e4f8 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 13 Jan 2017 01:59:13 +0100
|
||||
Subject: kernel32: Always start debugger on WinSta0.
|
||||
|
||||
---
|
||||
dlls/kernel32/except.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/kernel32/except.c b/dlls/kernel32/except.c
|
||||
index 1a1521a8038..cbc880f9a44 100644
|
||||
--- a/dlls/kernel32/except.c
|
||||
+++ b/dlls/kernel32/except.c
|
||||
@@ -314,6 +314,7 @@ static BOOL start_debugger(PEXCEPTION_POINTERS epointers, HANDLE hEvent)
|
||||
TRACE("Starting debugger %s\n", debugstr_a(cmdline));
|
||||
memset(&startup, 0, sizeof(startup));
|
||||
startup.cb = sizeof(startup);
|
||||
+ startup.lpDesktop = (char *)"WinSta0";
|
||||
startup.dwFlags = STARTF_USESHOWWINDOW;
|
||||
startup.wShowWindow = SW_SHOWNORMAL;
|
||||
ret = CreateProcessA(NULL, cmdline, NULL, NULL, TRUE, 0, env, NULL, &startup, &info);
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,53 @@
|
||||
From 003af598b273d00e79add3fae33aa6e3d008d93f Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Mon, 2 Jan 2017 15:34:21 +0800
|
||||
Subject: server: All fields up to CheckSum are mandatory regardless of
|
||||
SizeOfOptionalHeader value.
|
||||
|
||||
---
|
||||
server/mapping.c | 13 ++++++++++---
|
||||
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index 7fce12f953d..44fbe637933 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -470,11 +470,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
if (dos.e_magic != IMAGE_DOS_SIGNATURE) return STATUS_INVALID_IMAGE_NOT_MZ;
|
||||
pos = dos.e_lfanew;
|
||||
|
||||
+ /* zero out header in the case it's not present or partial */
|
||||
+ memset( &nt, 0, sizeof(nt) );
|
||||
size = pread( unix_fd, &nt, sizeof(nt), pos );
|
||||
if (size < sizeof(nt.Signature) + sizeof(nt.FileHeader)) return STATUS_INVALID_IMAGE_FORMAT;
|
||||
- /* zero out Optional header in the case it's not present or partial */
|
||||
- size = min( size, sizeof(nt.Signature) + sizeof(nt.FileHeader) + nt.FileHeader.SizeOfOptionalHeader );
|
||||
- if (size < sizeof(nt)) memset( (char *)&nt + size, 0, sizeof(nt) - size );
|
||||
if (nt.Signature != IMAGE_NT_SIGNATURE)
|
||||
{
|
||||
if (*(WORD *)&nt.Signature == IMAGE_OS2_SIGNATURE) return STATUS_INVALID_IMAGE_NE_FORMAT;
|
||||
@@ -513,6 +512,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
switch (nt.opt.hdr32.Magic)
|
||||
{
|
||||
case IMAGE_NT_OPTIONAL_HDR32_MAGIC:
|
||||
+ /* All fields up to CheckSum are mandatory regardless of SizeOfOptionalHeader value */
|
||||
+ size = max( nt.FileHeader.SizeOfOptionalHeader, offsetof(IMAGE_OPTIONAL_HEADER32, CheckSum) );
|
||||
+ if (size < sizeof(nt.opt.hdr32)) memset( (char *)&nt.opt.hdr32 + size, 0, sizeof(nt.opt.hdr32) - size );
|
||||
+
|
||||
mapping->image.base = nt.opt.hdr32.ImageBase;
|
||||
mapping->image.entry_point = nt.opt.hdr32.ImageBase + nt.opt.hdr32.AddressOfEntryPoint;
|
||||
mapping->image.map_size = ROUND_SIZE( nt.opt.hdr32.SizeOfImage );
|
||||
@@ -527,6 +530,10 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
|
||||
mapping->image.checksum = nt.opt.hdr32.CheckSum;
|
||||
break;
|
||||
case IMAGE_NT_OPTIONAL_HDR64_MAGIC:
|
||||
+ /* All fields up to CheckSum are mandatory regardless of SizeOfOptionalHeader value */
|
||||
+ size = max( nt.FileHeader.SizeOfOptionalHeader, offsetof(IMAGE_OPTIONAL_HEADER64, CheckSum) );
|
||||
+ if (size < sizeof(nt.opt.hdr64)) memset( (char *)&nt.opt.hdr64 + size, 0, sizeof(nt.opt.hdr64) - size );
|
||||
+
|
||||
mapping->image.base = nt.opt.hdr64.ImageBase;
|
||||
mapping->image.entry_point = nt.opt.hdr64.ImageBase + nt.opt.hdr64.AddressOfEntryPoint;
|
||||
mapping->image.map_size = ROUND_SIZE( nt.opt.hdr64.SizeOfImage );
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,31 @@
|
||||
From bbc0ffba68c07dbd27ba4c33b8b6f1a66783b8ff Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Mon, 2 Jan 2017 15:35:41 +0800
|
||||
Subject: ntdll: If PE image size is larger than the backed file size then
|
||||
treat file as removable.
|
||||
|
||||
---
|
||||
dlls/ntdll/virtual.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
|
||||
index bdf94063871..1a60fec7cfd 100644
|
||||
--- a/dlls/ntdll/virtual.c
|
||||
+++ b/dlls/ntdll/virtual.c
|
||||
@@ -1163,6 +1163,13 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, char *base, SIZE_T total_siz
|
||||
/* unaligned sections, this happens for native subsystem binaries */
|
||||
/* in that case Windows simply maps in the whole file */
|
||||
|
||||
+ /* if the image size is larger than the backed file size we can't mmap it */
|
||||
+ if (total_size > ROUND_SIZE( 0, st.st_size ))
|
||||
+ {
|
||||
+ close_handle( dup_mapping );
|
||||
+ dup_mapping = 0;
|
||||
+ }
|
||||
+
|
||||
if (map_file_into_view( view, fd, 0, total_size, 0, VPROT_COMMITTED | VPROT_READ | VPROT_WRITECOPY,
|
||||
!dup_mapping ) != STATUS_SUCCESS) goto error;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,38 @@
|
||||
From 3f4b08acc72791d1c9bb244c39f0721b8da180de Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Mon, 2 Jan 2017 15:38:48 +0800
|
||||
Subject: kernel32: On process entry store PEB address in %ebx.
|
||||
|
||||
8k demo custom PE loader depends on this.
|
||||
---
|
||||
dlls/kernel32/process.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index fdf272f61b0..231844b80a7 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -1073,12 +1073,19 @@ __ASM_GLOBAL_FUNC( call_process_entry,
|
||||
__ASM_CFI(".cfi_rel_offset %ebp,0\n\t")
|
||||
"movl %esp,%ebp\n\t"
|
||||
__ASM_CFI(".cfi_def_cfa_register %ebp\n\t")
|
||||
+ "pushl %ebx\n\t"
|
||||
+ __ASM_CFI(".cfi_rel_offset %ebx,-4\n\t")
|
||||
+ "subl $12,%esp\n\t"
|
||||
"pushl 4(%ebp)\n\t" /* deliberately mis-align the stack by 8, Doom 3 needs this */
|
||||
"pushl 4(%ebp)\n\t" /* Driller expects readable address at this offset */
|
||||
"pushl 4(%ebp)\n\t"
|
||||
"pushl 8(%ebp)\n\t"
|
||||
+ "movl 8(%ebp),%ebx\n\t"
|
||||
"call *12(%ebp)\n\t"
|
||||
- "leave\n\t"
|
||||
+ "leal -4(%ebp),%esp\n\t"
|
||||
+ "popl %ebx\n\t"
|
||||
+ __ASM_CFI(".cfi_same_value %ebx\n\t")
|
||||
+ "popl %ebp\n\t"
|
||||
__ASM_CFI(".cfi_def_cfa %esp,4\n\t")
|
||||
__ASM_CFI(".cfi_same_value %ebp\n\t")
|
||||
"ret" )
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,25 @@
|
||||
From 0aaa4c217073d55d35e7c85bd8ca44b19bb31ede Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Mon, 2 Jan 2017 15:47:52 +0800
|
||||
Subject: kernel32/tests: Fix a module reference leak leading to an undeletable
|
||||
temporary file.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/loader.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
|
||||
index 4f72c3e599b..9ddfd8d7922 100644
|
||||
--- a/dlls/kernel32/tests/loader.c
|
||||
+++ b/dlls/kernel32/tests/loader.c
|
||||
@@ -1457,6 +1457,7 @@ static void test_import_resolution(void)
|
||||
ok( ptr->thunks[0].u1.Function == 0xdeadbeef, "thunk resolved to %p for %s.%s\n",
|
||||
(void *)ptr->thunks[0].u1.Function, data.module, data.function.name );
|
||||
ok( ptr->tls_index == 9999, "wrong tls index %d\n", ptr->tls_index );
|
||||
+ FreeLibrary( mod2 );
|
||||
FreeLibrary( mod );
|
||||
break;
|
||||
case 2: /* load without IMAGE_FILE_DLL doesn't resolve imports */
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,112 @@
|
||||
From b2443dc0deaec8c5e7d70f1bf2004181d2240177 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Mon, 2 Jan 2017 15:50:01 +0800
|
||||
Subject: kernel32/tests: Add a PE test image that resembles format of some of
|
||||
8k demos.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/loader.c | 39 +++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 37 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
|
||||
index 9ddfd8d7922..a74647b3d40 100644
|
||||
--- a/dlls/kernel32/tests/loader.c
|
||||
+++ b/dlls/kernel32/tests/loader.c
|
||||
@@ -184,7 +184,7 @@ static DWORD create_test_dll( const IMAGE_DOS_HEADER *dos_header, UINT dos_size,
|
||||
{
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WriteFile(hfile, &nt_header->OptionalHeader,
|
||||
- min(nt_header->FileHeader.SizeOfOptionalHeader, sizeof(IMAGE_OPTIONAL_HEADER)),
|
||||
+ sizeof(IMAGE_OPTIONAL_HEADER),
|
||||
&dummy, NULL);
|
||||
ok(ret, "WriteFile error %d\n", GetLastError());
|
||||
if (nt_header->FileHeader.SizeOfOptionalHeader > sizeof(IMAGE_OPTIONAL_HEADER))
|
||||
@@ -200,6 +200,8 @@ static DWORD create_test_dll( const IMAGE_DOS_HEADER *dos_header, UINT dos_size,
|
||||
assert(nt_header->FileHeader.NumberOfSections <= 1);
|
||||
if (nt_header->FileHeader.NumberOfSections)
|
||||
{
|
||||
+ SetFilePointer(hfile, dos_size + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + nt_header->FileHeader.SizeOfOptionalHeader, NULL, FILE_BEGIN);
|
||||
+
|
||||
section.SizeOfRawData = 10;
|
||||
|
||||
if (nt_header->OptionalHeader.SectionAlignment >= page_size)
|
||||
@@ -224,6 +226,17 @@ static DWORD create_test_dll( const IMAGE_DOS_HEADER *dos_header, UINT dos_size,
|
||||
ret = WriteFile(hfile, section_data, sizeof(section_data), &dummy, NULL);
|
||||
ok(ret, "WriteFile error %d\n", GetLastError());
|
||||
}
|
||||
+
|
||||
+ /* Minimal PE image that Windows7+ is able to load: 268 bytes */
|
||||
+ size = GetFileSize(hfile, NULL);
|
||||
+ if (size < 268)
|
||||
+ {
|
||||
+ file_align = 268 - size;
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ ret = WriteFile(hfile, filler, file_align, &dummy, NULL);
|
||||
+ ok(ret, "WriteFile error %d\n", GetLastError());
|
||||
+ }
|
||||
+
|
||||
size = GetFileSize(hfile, NULL);
|
||||
CloseHandle(hfile);
|
||||
return size;
|
||||
@@ -294,7 +307,8 @@ static void query_image_section( int id, const char *dll_name, const IMAGE_NT_HE
|
||||
image.LoaderFlags, nt_header->OptionalHeader.LoaderFlags );
|
||||
ok( image.ImageFileSize == file_size || broken(!image.ImageFileSize), /* winxpsp1 */
|
||||
"%u: ImageFileSize wrong %08x / %08x\n", id, image.ImageFileSize, file_size );
|
||||
- ok( image.CheckSum == nt_header->OptionalHeader.CheckSum, "%u: CheckSum wrong %08x / %08x\n", id,
|
||||
+ ok( image.CheckSum == nt_header->OptionalHeader.CheckSum || broken(truncated),
|
||||
+ "%u: CheckSum wrong %08x / %08x\n", id,
|
||||
image.CheckSum, nt_header->OptionalHeader.CheckSum );
|
||||
/* FIXME: needs more work: */
|
||||
/* image.GpValue */
|
||||
@@ -444,6 +458,7 @@ static void test_Loader(void)
|
||||
/* Mandatory are all fields up to SizeOfHeaders, everything else
|
||||
* is really optional (at least that's true for XP).
|
||||
*/
|
||||
+#if 0 /* 32-bit Windows 8 crashes inside of LoadLibrary */
|
||||
{ sizeof(dos_header),
|
||||
1, FIELD_OFFSET(IMAGE_OPTIONAL_HEADER, CheckSum), 0x200, 0x200,
|
||||
sizeof(dos_header) + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + FIELD_OFFSET(IMAGE_OPTIONAL_HEADER, CheckSum) + sizeof(IMAGE_SECTION_HEADER) + 0x10,
|
||||
@@ -451,6 +466,7 @@ static void test_Loader(void)
|
||||
{ ERROR_SUCCESS, ERROR_BAD_EXE_FORMAT, ERROR_INVALID_ADDRESS,
|
||||
ERROR_NOACCESS }
|
||||
},
|
||||
+#endif
|
||||
{ sizeof(dos_header),
|
||||
0, FIELD_OFFSET(IMAGE_OPTIONAL_HEADER, CheckSum), 0x200, 0x200,
|
||||
0xd0, /* beyond of the end of file */
|
||||
@@ -519,6 +535,14 @@ static void test_Loader(void)
|
||||
0x40, /* minimal image size that Windows7 accepts */
|
||||
0,
|
||||
{ ERROR_SUCCESS }
|
||||
+ },
|
||||
+ /* the following data mimics the PE image which 8k demos have */
|
||||
+ { 0x04,
|
||||
+ 0, 0x08,
|
||||
+ 0x04 /* also serves as e_lfanew in the truncated MZ header */, 0x04,
|
||||
+ 0x200000,
|
||||
+ 0x40,
|
||||
+ { ERROR_SUCCESS }
|
||||
}
|
||||
};
|
||||
int i;
|
||||
@@ -709,6 +733,17 @@ static void test_Loader(void)
|
||||
ret = FreeLibrary(hlib_as_data_file);
|
||||
ok(ret, "FreeLibrary error %d\n", GetLastError());
|
||||
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ ret = DeleteFileA(dll_name);
|
||||
+ ok(ret, "DeleteFile error %d\n", GetLastError());
|
||||
+
|
||||
+ nt_header.OptionalHeader.AddressOfEntryPoint = 0x12345678;
|
||||
+ file_size = create_test_dll( &dos_header, td[i].size_of_dos_header, &nt_header, dll_name );
|
||||
+ if (!file_size)
|
||||
+ {
|
||||
+ ok(0, "could not create %s\n", dll_name);
|
||||
+ break;
|
||||
+ }
|
||||
query_image_section( i, dll_name, &nt_header );
|
||||
}
|
||||
else
|
||||
--
|
||||
2.11.0
|
||||
|
2
patches/kernel32-PE_Loader_Fixes/definition
Normal file
2
patches/kernel32-PE_Loader_Fixes/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: [42125] Various PE loader fixes for 8k demos
|
||||
Depends: kernel32-Misalign_Workaround
|
@@ -0,0 +1,33 @@
|
||||
From 8570cb45ae2a6e39df2fe1d9642fb4d987d6b2e0 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Jansen <learn0more+wine@gmail.com>
|
||||
Date: Fri, 13 Jan 2017 23:20:52 +0100
|
||||
Subject: msi: Do not sign extend after multiplying.
|
||||
|
||||
Signed-off-by: Mark Jansen <learn0more+wine@gmail.com>
|
||||
---
|
||||
dlls/msi/dialog.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
|
||||
index fc9c24c90a3..d9a2ab7a614 100644
|
||||
--- a/dlls/msi/dialog.c
|
||||
+++ b/dlls/msi/dialog.c
|
||||
@@ -3184,13 +3184,13 @@ static LONGLONG msi_vcl_get_cost( msi_dialog *dialog )
|
||||
MSICOSTTREE_SELFONLY, INSTALLSTATE_LOCAL, &each_cost)))
|
||||
{
|
||||
/* each_cost is in 512-byte units */
|
||||
- total_cost += each_cost * 512;
|
||||
+ total_cost += ((LONGLONG)each_cost) * 512;
|
||||
}
|
||||
if (ERROR_SUCCESS == (MSI_GetFeatureCost(dialog->package, feature,
|
||||
MSICOSTTREE_SELFONLY, INSTALLSTATE_ABSENT, &each_cost)))
|
||||
{
|
||||
/* each_cost is in 512-byte units */
|
||||
- total_cost -= each_cost * 512;
|
||||
+ total_cost -= ((LONGLONG)each_cost) * 512;
|
||||
}
|
||||
}
|
||||
return total_cost;
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -0,0 +1,27 @@
|
||||
From d386a3724eac666427f7f176e7209f74e1b98885 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 15 Jan 2017 18:59:10 +0100
|
||||
Subject: msvideo16: Check if any 16 bit thunks have been allocated before
|
||||
accessing pointer.
|
||||
|
||||
---
|
||||
dlls/msvideo.dll16/msvideo16.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/dlls/msvideo.dll16/msvideo16.c b/dlls/msvideo.dll16/msvideo16.c
|
||||
index 8f02cc1ebc8..5a3b8aa74ee 100644
|
||||
--- a/dlls/msvideo.dll16/msvideo16.c
|
||||
+++ b/dlls/msvideo.dll16/msvideo16.c
|
||||
@@ -762,6 +762,9 @@ static struct msvideo_thunk* MSVIDEO_HasThunk(HIC16 hic)
|
||||
{
|
||||
struct msvideo_thunk* thunk;
|
||||
|
||||
+ if (!MSVIDEO_Thunks)
|
||||
+ return NULL;
|
||||
+
|
||||
for (thunk = MSVIDEO_Thunks; thunk < &MSVIDEO_Thunks[MAX_THUNKS]; thunk++)
|
||||
{
|
||||
if (thunk->hIC16 == hic) return thunk;
|
||||
--
|
||||
2.11.0
|
||||
|
1
patches/msvideo16-HasThunk/definition
Normal file
1
patches/msvideo16-HasThunk/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [41448] Check if any 16 bit thunks have been allocated before accessing pointer
|
@@ -0,0 +1,37 @@
|
||||
From 5eac8a570514043d3a534b165aa6e2f846826e0e Mon Sep 17 00:00:00 2001
|
||||
From: Nikolay Sivov <nsivov@codeweavers.com>
|
||||
Date: Mon, 19 Dec 2016 00:06:04 +0300
|
||||
Subject: msxml3: Accept AllowXsltScript and AllowDocumentFunction properties
|
||||
|
||||
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
|
||||
---
|
||||
dlls/msxml3/domdoc.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
|
||||
index 36432190bb4..62b48fcb21a 100644
|
||||
--- a/dlls/msxml3/domdoc.c
|
||||
+++ b/dlls/msxml3/domdoc.c
|
||||
@@ -71,6 +71,8 @@ static const WCHAR PropertyNewParserW[] = {'N','e','w','P','a','r','s','e','r',0
|
||||
static const WCHAR PropValueXPathW[] = {'X','P','a','t','h',0};
|
||||
static const WCHAR PropValueXSLPatternW[] = {'X','S','L','P','a','t','t','e','r','n',0};
|
||||
static const WCHAR PropertyResolveExternalsW[] = {'R','e','s','o','l','v','e','E','x','t','e','r','n','a','l','s',0};
|
||||
+static const WCHAR PropertyAllowXsltScriptW[] = {'A','l','l','o','w','X','s','l','t','S','c','r','i','p','t',0};
|
||||
+static const WCHAR PropertyAllowDocumentFunctionW[] = {'A','l','l','o','w','D','o','c','u','m','e','n','t','F','u','n','c','t','i','o','n',0};
|
||||
|
||||
/* Anything that passes the test_get_ownerDocument()
|
||||
* tests can go here (data shared between all instances).
|
||||
@@ -3072,7 +3074,9 @@ static HRESULT WINAPI domdoc_setProperty(
|
||||
}
|
||||
else if (lstrcmpiW(p, PropertyProhibitDTDW) == 0 ||
|
||||
lstrcmpiW(p, PropertyNewParserW) == 0 ||
|
||||
- lstrcmpiW(p, PropertyResolveExternalsW) == 0)
|
||||
+ lstrcmpiW(p, PropertyResolveExternalsW) == 0 ||
|
||||
+ lstrcmpiW(p, PropertyAllowXsltScriptW) == 0 ||
|
||||
+ lstrcmpiW(p, PropertyAllowDocumentFunctionW) == 0)
|
||||
{
|
||||
/* Ignore */
|
||||
FIXME("Ignoring property %s, value %s\n", debugstr_w(p), debugstr_variant(&value));
|
||||
--
|
||||
2.11.0
|
||||
|
1
patches/msxml3-AllowXsltScript/definition
Normal file
1
patches/msxml3-AllowXsltScript/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [41747] Ignore AllowXsltScript and AllowDocumentFunction properties in msxml
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user