diff --git a/patches/dbghelp-Debug_Symbols/0001-dbghelp-Always-check-for-debug-symbols-in-BINDIR.patch b/patches/dbghelp-Debug_Symbols/0001-dbghelp-Always-check-for-debug-symbols-in-BINDIR.patch index 6414e6c8..18175a82 100644 --- a/patches/dbghelp-Debug_Symbols/0001-dbghelp-Always-check-for-debug-symbols-in-BINDIR.patch +++ b/patches/dbghelp-Debug_Symbols/0001-dbghelp-Always-check-for-debug-symbols-in-BINDIR.patch @@ -1,4 +1,4 @@ -From ec5d4d8435795cb193909159ed2e692d330f2f1a Mon Sep 17 00:00:00 2001 +From 8c78d1203c965927d0a0e6fcde31dd651cc704db Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 6 Oct 2014 05:06:06 +0200 Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR. @@ -9,20 +9,20 @@ Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR. 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dlls/dbghelp/Makefile.in b/dlls/dbghelp/Makefile.in -index abb440ffbe6..d200e891c8e 100644 +index 22be2612eeb..2e11bb2b62d 100644 --- a/dlls/dbghelp/Makefile.in +++ b/dlls/dbghelp/Makefile.in @@ -2,7 +2,7 @@ MODULE = dbghelp.dll IMPORTLIB = dbghelp IMPORTS = $(ZLIB_PE_LIBS) EXTRAINCL = $(ZLIB_PE_CFLAGS) --EXTRADEFS = -DWINE_NO_LONG_TYPES -D_IMAGEHLP_SOURCE_ -+EXTRADEFS = -DWINE_NO_LONG_TYPES -D_IMAGEHLP_SOURCE_ -DBINDIR="L\"${bindir}\"" +-EXTRADEFS = -D_IMAGEHLP_SOURCE_ ++EXTRADEFS = -D_IMAGEHLP_SOURCE_ -DBINDIR="L\"${bindir}\"" DELAYIMPORTS = version C_SRCS = \ diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c -index def8b444e4e..7e664f8074a 100644 +index 404c7c11dbb..e0779e4e3a7 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -1445,6 +1445,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename, diff --git a/patches/eventfd_synchronization/0011-server-Add-an-object-operation-to-grab-the-esync-fil.patch b/patches/eventfd_synchronization/0011-server-Add-an-object-operation-to-grab-the-esync-fil.patch index e333f80e..ee1b79fa 100644 --- a/patches/eventfd_synchronization/0011-server-Add-an-object-operation-to-grab-the-esync-fil.patch +++ b/patches/eventfd_synchronization/0011-server-Add-an-object-operation-to-grab-the-esync-fil.patch @@ -1,4 +1,4 @@ -From 5f823452dba72254c36a68c974528b83cb5c50b6 Mon Sep 17 00:00:00 2001 +From 9ab2897d8c05a9950ce14200d1d7f374a31ee886 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Fri, 8 Jun 2018 18:51:40 -0500 Subject: [PATCH] server: Add an object operation to grab the esync file @@ -38,11 +38,12 @@ Split off to decrease patch size. server/thread.c | 3 +++ server/timer.c | 1 + server/token.c | 1 + + server/window.c | 1 + server/winstation.c | 2 ++ - 33 files changed, 67 insertions(+) + 34 files changed, 68 insertions(+) diff --git a/server/async.c b/server/async.c -index 1a564ff1a69..0b8e1ba1fd9 100644 +index 7aef28355f0..7ac675f75c4 100644 --- a/server/async.c +++ b/server/async.c @@ -77,6 +77,7 @@ static const struct object_ops async_ops = @@ -53,7 +54,7 @@ index 1a564ff1a69..0b8e1ba1fd9 100644 async_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -587,6 +588,7 @@ static const struct object_ops iosb_ops = +@@ -586,6 +587,7 @@ static const struct object_ops iosb_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -74,7 +75,7 @@ index ff0799f5880..d9824de8eac 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/change.c b/server/change.c -index a01d6894151..782801e8e1d 100644 +index 325782d8197..90d5bfa3019 100644 --- a/server/change.c +++ b/server/change.c @@ -112,6 +112,7 @@ static const struct object_ops dir_ops = @@ -110,7 +111,7 @@ index 6933195e72d..3d4be86a212 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/console.c b/server/console.c -index 136c14862e3..e7c97e99579 100644 +index 5407fba1411..ef6bcb12f5a 100644 --- a/server/console.c +++ b/server/console.c @@ -81,6 +81,7 @@ static const struct object_ops console_ops = @@ -278,7 +279,7 @@ index f1b79b1b35e..c727bfdd1ba 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/fd.c b/server/fd.c -index 45a1b226f33..b0e98909fa6 100644 +index cd8f7171e6e..a61c09559fe 100644 --- a/server/fd.c +++ b/server/fd.c @@ -212,6 +212,7 @@ static const struct object_ops fd_ops = @@ -314,10 +315,10 @@ index 45a1b226f33..b0e98909fa6 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/file.c b/server/file.c -index 3079afdbdfd..30db0450a3f 100644 +index 090d6c244f7..7edf612de73 100644 --- a/server/file.c +++ b/server/file.c -@@ -94,6 +94,7 @@ static const struct object_ops file_ops = +@@ -123,6 +123,7 @@ static const struct object_ops file_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ default_fd_signaled, /* signaled */ @@ -326,7 +327,7 @@ index 3079afdbdfd..30db0450a3f 100644 no_signal, /* signal */ file_get_fd, /* get_fd */ diff --git a/server/handle.c b/server/handle.c -index bc692b8ebeb..c280335611c 100644 +index 38ad80da267..53cc1e4eb43 100644 --- a/server/handle.c +++ b/server/handle.c @@ -126,6 +126,7 @@ static const struct object_ops handle_table_ops = @@ -386,7 +387,7 @@ index 2d8697ec9bd..4cf9b73f784 100644 no_signal, /* signal */ mailslot_device_file_get_fd, /* get_fd */ diff --git a/server/mapping.c b/server/mapping.c -index bc9ed5bdcb9..6cd123f6aa9 100644 +index 8d4332d240f..1a8d480cfa9 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -67,6 +67,7 @@ static const struct object_ops ranges_ops = @@ -470,7 +471,7 @@ index 3e6cf09d4f2..b8ec17a787a 100644 no_signal, /* signal */ named_pipe_device_file_get_fd, /* get_fd */ diff --git a/server/object.h b/server/object.h -index f156f1d2f13..c98e45125a0 100644 +index f6ad9e8ccdd..f4261d0d585 100644 --- a/server/object.h +++ b/server/object.h @@ -78,6 +78,8 @@ struct object_ops @@ -483,7 +484,7 @@ index f156f1d2f13..c98e45125a0 100644 void (*satisfied)(struct object *,struct wait_queue_entry *); /* signal an object */ diff --git a/server/process.c b/server/process.c -index 0cc7f6b60ee..c502a58f9a2 100644 +index 60cc03032b2..c79a574d137 100644 --- a/server/process.c +++ b/server/process.c @@ -105,6 +105,7 @@ static const struct object_ops process_ops = @@ -511,7 +512,7 @@ index 0cc7f6b60ee..c502a58f9a2 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/queue.c b/server/queue.c -index bcb2f237074..6daa12958ca 100644 +index 051aafc6c3d..375b3e33a6e 100644 --- a/server/queue.c +++ b/server/queue.c @@ -173,6 +173,7 @@ static const struct object_ops msg_queue_ops = @@ -531,7 +532,7 @@ index bcb2f237074..6daa12958ca 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/registry.c b/server/registry.c -index b00abdbc004..8652576ec3f 100644 +index 93e8a309593..32a424cd842 100644 --- a/server/registry.c +++ b/server/registry.c @@ -178,6 +178,7 @@ static const struct object_ops key_ops = @@ -591,7 +592,7 @@ index 19b76d44c16..55cd6aa037e 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/sock.c b/server/sock.c -index 2df4f3d3056..3cc06db8225 100644 +index 512b7c0f78e..7a8be919494 100644 --- a/server/sock.c +++ b/server/sock.c @@ -249,6 +249,7 @@ static const struct object_ops sock_ops = @@ -602,7 +603,7 @@ index 2df4f3d3056..3cc06db8225 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ sock_get_fd, /* get_fd */ -@@ -3114,6 +3115,7 @@ static const struct object_ops ifchange_ops = +@@ -3124,6 +3125,7 @@ static const struct object_ops ifchange_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -610,7 +611,7 @@ index 2df4f3d3056..3cc06db8225 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ ifchange_get_fd, /* get_fd */ -@@ -3335,6 +3337,7 @@ static const struct object_ops socket_device_ops = +@@ -3345,6 +3347,7 @@ static const struct object_ops socket_device_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -671,10 +672,10 @@ index 96dc9d00ca1..f59902d5607 100644 no_signal, /* signal */ no_get_fd, /* get_fd */ diff --git a/server/token.c b/server/token.c -index 820a7a0e07d..e42c1a159e3 100644 +index dcb2a879ba6..76a6bc279a5 100644 --- a/server/token.c +++ b/server/token.c -@@ -163,6 +163,7 @@ static const struct object_ops token_ops = +@@ -150,6 +150,7 @@ static const struct object_ops token_ops = no_add_queue, /* add_queue */ NULL, /* remove_queue */ NULL, /* signaled */ @@ -682,8 +683,20 @@ index 820a7a0e07d..e42c1a159e3 100644 NULL, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ +diff --git a/server/window.c b/server/window.c +index 24059aac0fe..a79fda5ad80 100644 +--- a/server/window.c ++++ b/server/window.c +@@ -108,6 +108,7 @@ static const struct object_ops window_ops = + no_add_queue, /* add_queue */ + NULL, /* remove_queue */ + NULL, /* signaled */ ++ NULL, /* get_esync_fd */ + NULL, /* satisfied */ + no_signal, /* signal */ + no_get_fd, /* get_fd */ diff --git a/server/winstation.c b/server/winstation.c -index 854affead77..1535321da2d 100644 +index 1408e1a9e65..a99c60a28ff 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -75,6 +75,7 @@ static const struct object_ops winstation_ops = diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 03ba9e4a..7b7e3a97 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "576cdea0d75498ed948d0ba66a3451ea426f7935" + echo "d9f3ea328785d4146a095ce2efbdbb7c1f69f1cf" } # Show version information @@ -1972,7 +1972,7 @@ fi # | server/main.c, server/mapping.c, server/mutex.c, server/named_pipe.c, server/object.h, server/process.c, # | server/process.h, server/protocol.def, server/queue.c, server/registry.c, server/request.c, server/semaphore.c, # | server/serial.c, server/signal.c, server/sock.c, server/symlink.c, server/thread.c, server/thread.h, server/timer.c, -# | server/token.c, server/winstation.c +# | server/token.c, server/window.c, server/winstation.c # | if test "$enable_eventfd_synchronization" -eq 1; then patch_apply eventfd_synchronization/0001-configure-Check-for-sys-eventfd.h-ppoll-and-shm_open.patch diff --git a/patches/shlwapi-UrlCanonicalize/0001-shlwapi-Support-.-in-UrlCanonicalize.patch b/patches/shlwapi-UrlCanonicalize/0001-shlwapi-Support-.-in-UrlCanonicalize.patch index b8418118..5477c0dd 100644 --- a/patches/shlwapi-UrlCanonicalize/0001-shlwapi-Support-.-in-UrlCanonicalize.patch +++ b/patches/shlwapi-UrlCanonicalize/0001-shlwapi-Support-.-in-UrlCanonicalize.patch @@ -1,4 +1,4 @@ -From d1a351c80c4c8c7133d76ace60271736d5220c01 Mon Sep 17 00:00:00 2001 +From ad58ff0d742084c451a36ba46c53363752fcb8aa Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 28 Jun 2019 09:57:31 +1000 Subject: [PATCH] shlwapi: Support ./ in UrlCanonicalize. @@ -11,10 +11,10 @@ Signed-off-by: Alistair Leslie-Hughes 2 files changed, 19 insertions(+) diff --git a/dlls/kernelbase/path.c b/dlls/kernelbase/path.c -index 82708be544..83922c0278 100644 +index 5f983895576..07457dcfc1b 100644 --- a/dlls/kernelbase/path.c +++ b/dlls/kernelbase/path.c -@@ -3593,6 +3593,7 @@ HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWOR +@@ -3562,6 +3562,7 @@ HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWOR * 4 have // 5,3 * 5 have 1[+] alnum 6,3 * 6 have location (found /) save root location @@ -22,7 +22,7 @@ index 82708be544..83922c0278 100644 */ wk1 = url; -@@ -3619,6 +3620,11 @@ HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWOR +@@ -3588,6 +3589,11 @@ HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWOR state = 5; is_file_url = TRUE; } @@ -34,7 +34,7 @@ index 82708be544..83922c0278 100644 while (*wk1) { -@@ -3823,6 +3829,15 @@ HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWOR +@@ -3792,6 +3798,15 @@ HRESULT WINAPI UrlCanonicalizeW(const WCHAR *src_url, WCHAR *canonicalized, DWOR } *wk2 = '\0'; break; @@ -51,20 +51,20 @@ index 82708be544..83922c0278 100644 FIXME("how did we get here - state=%d\n", state); heap_free(url_copy); diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c -index d30737f60a..96635c9836 100644 +index 703bdcd0a55..eea254442c6 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c -@@ -204,6 +204,10 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { - {"///A/../B", URL_WININET_COMPATIBILITY, S_OK, "///B", FALSE}, - {"A", 0, S_OK, "A", FALSE}, - {"../A", 0, S_OK, "../A", FALSE}, -+ {"./A", 0, S_OK, "A", FALSE}, -+ {"./A/./B", 0, S_OK, "A/B", FALSE}, -+ {"./A", URL_DONT_SIMPLIFY, S_OK, "./A", FALSE}, -+ {"A/./B", 0, S_OK, "A/B", TRUE}, - {"A/../B", 0, S_OK, "B", TRUE}, - {"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO | URL_WININET_COMPATIBILITY /*0x82000000*/, S_OK, "/uri-res/N2R?urn:sha1:B3K", FALSE} /*LimeWire online installer calls this*/, - {"http:www.winehq.org/dir/../index.html", 0, S_OK, "http:www.winehq.org/index.html"}, +@@ -185,6 +185,10 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { + {"///A/../B", URL_WININET_COMPATIBILITY, "///B", FALSE}, + {"A", 0, "A", FALSE}, + {"../A", 0, "../A", FALSE}, ++ {"./A", 0, "A", FALSE}, ++ {"./A/./B", 0, "A/B", FALSE}, ++ {"./A", URL_DONT_SIMPLIFY, "./A", FALSE}, ++ {"A/./B", 0, "A/B", TRUE}, + {"A/../B", 0, "B", TRUE}, + {"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO | URL_WININET_COMPATIBILITY /*0x82000000*/, "/uri-res/N2R?urn:sha1:B3K", FALSE} /*LimeWire online installer calls this*/, + {"http:www.winehq.org/dir/../index.html", 0, "http:www.winehq.org/index.html"}, -- -2.17.1 +2.34.1 diff --git a/patches/shlwapi-UrlCombine/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch b/patches/shlwapi-UrlCombine/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch index f97fe121..abe61417 100644 --- a/patches/shlwapi-UrlCombine/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch +++ b/patches/shlwapi-UrlCombine/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch @@ -1,83 +1,66 @@ -From ba33fe7790adb2bbd335470b00a419bf051d9ae0 Mon Sep 17 00:00:00 2001 +From 25d11abe74d0f13f34cbc27ce33a1246fcafc0b2 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 17 Jan 2014 01:19:41 +0100 Subject: [PATCH] shlwapi/tests: Add additional tests for UrlCombine and UrlCanonicalize --- - dlls/shlwapi/tests/url.c | 46 +++++++++++++++++++++++++++++++--------- - 1 file changed, 36 insertions(+), 10 deletions(-) + dlls/shlwapi/tests/url.c | 30 +++++++++++++++++++++++++----- + 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c -index 4f1f15b6e2c..04281a7a77d 100644 +index eea254442c6..8e17969d0c5 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c -@@ -209,6 +209,14 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { - {"./A", URL_DONT_SIMPLIFY, S_OK, "./A", FALSE}, - {"A/./B", 0, S_OK, "A/B", TRUE}, - {"A/../B", 0, S_OK, "B", TRUE}, -+ {"A/../B/./../C", 0, S_OK, "C", TRUE}, -+ {"A/../B/./../C", URL_DONT_SIMPLIFY, S_OK, "A/../B/./../C", FALSE}, -+ {".\\A", 0, S_OK, ".\\A", FALSE}, -+ {"A\\.\\B", 0, S_OK, "A\\.\\B", FALSE}, -+ {".", 0, S_OK, "/", TRUE}, -+ {"./A", 0, S_OK, "A", TRUE}, -+ {"A/./B", 0, S_OK, "A/B", TRUE}, -+ {"/:test\\", 0, S_OK, "/:test\\", TRUE}, - {"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO | URL_WININET_COMPATIBILITY /*0x82000000*/, S_OK, "/uri-res/N2R?urn:sha1:B3K", FALSE} /*LimeWire online installer calls this*/, - {"http:www.winehq.org/dir/../index.html", 0, S_OK, "http:www.winehq.org/index.html"}, - {"http://localhost/test.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/test.html"}, -@@ -362,6 +370,7 @@ typedef struct _TEST_URL_COMBINE { +@@ -190,6 +190,14 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { + {"./A", URL_DONT_SIMPLIFY, "./A", FALSE}, + {"A/./B", 0, "A/B", TRUE}, + {"A/../B", 0, "B", TRUE}, ++ {"A/../B/./../C", 0, "C", TRUE}, ++ {"A/../B/./../C", URL_DONT_SIMPLIFY, "A/../B/./../C", FALSE}, ++ {".\\A", 0, ".\\A", FALSE}, ++ {"A\\.\\B", 0, "A\\.\\B", FALSE}, ++ {".", 0, "/", TRUE}, ++ {"./A", 0, "A", TRUE}, ++ {"A/./B", 0, "A/B", TRUE}, ++ {"/:test\\", 0, "/:test\\", TRUE}, + {"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO | URL_WININET_COMPATIBILITY /*0x82000000*/, "/uri-res/N2R?urn:sha1:B3K", FALSE} /*LimeWire online installer calls this*/, + {"http:www.winehq.org/dir/../index.html", 0, "http:www.winehq.org/index.html"}, + {"http://localhost/test.html", URL_FILE_USE_PATHURL, "http://localhost/test.html"}, +@@ -339,6 +347,7 @@ typedef struct _TEST_URL_COMBINE { + const char *url2; DWORD flags; - HRESULT expectret; const char *expecturl; + BOOL todo; } TEST_URL_COMBINE; static const TEST_URL_COMBINE TEST_COMBINE[] = { -@@ -383,6 +392,15 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { - {"http://www.winehq.org/test14#aaa/bbb#ccc", "#", 0, S_OK, "http://www.winehq.org/test14#"}, - {"http://www.winehq.org/tests/?query=x/y/z", "tests15", 0, S_OK, "http://www.winehq.org/tests/tests15"}, - {"http://www.winehq.org/tests/?query=x/y/z#example", "tests16", 0, S_OK, "http://www.winehq.org/tests/tests16"}, -+ {"http://www.winehq.org/tests17", ".", 0, S_OK, "http://www.winehq.org/", TRUE}, -+ {"http://www.winehq.org/tests18/test", ".", 0, S_OK, "http://www.winehq.org/tests18/", TRUE}, -+ {"http://www.winehq.org/tests19/test", "./", 0, S_OK, "http://www.winehq.org/tests19/", FALSE}, -+ {"http://www.winehq.org/tests20/test", "/", 0, S_OK, "http://www.winehq.org/", FALSE}, -+ {"http://www.winehq.org/tests/test", "./test21", 0, S_OK, "http://www.winehq.org/tests/test21", FALSE}, -+ {"http://www.winehq.org/tests/test", "./test22/../test", 0, S_OK, "http://www.winehq.org/tests/test", FALSE}, -+ {"http://www.winehq.org/tests/", "http://www.winehq.org:80/tests23", 0, S_OK, "http://www.winehq.org/tests23", TRUE}, -+ {"http://www.winehq.org/tests/", "tests24/./test/../test", 0, S_OK, "http://www.winehq.org/tests/tests24/test", FALSE}, -+ {"http://www.winehq.org/tests/./tests25", "./", 0, S_OK, "http://www.winehq.org/tests/", FALSE}, - {"file:///C:\\dir\\file.txt", "test.txt", 0, S_OK, "file:///C:/dir/test.txt"}, - {"file:///C:\\dir\\file.txt#hash\\hash", "test.txt", 0, S_OK, "file:///C:/dir/file.txt#hash/test.txt"}, - {"file:///C:\\dir\\file.html#hash\\hash", "test.html", 0, S_OK, "file:///C:/dir/test.html"}, -@@ -1233,7 +1251,7 @@ static void test_UrlCanonicalizeW(void) +@@ -1157,7 +1166,7 @@ static void test_UrlCanonicalizeW(void) /* ########################### */ --static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags, HRESULT dwExpectReturn, const char *szExpectUrl) -+static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags, HRESULT dwExpectReturn, const char *szExpectUrl, BOOL todo) +-static void check_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags, const char *szExpectUrl) ++static void check_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags, const char *szExpectUrl, BOOL todo) { HRESULT hr; CHAR szReturnUrl[INTERNET_MAX_URL_LENGTH]; -@@ -1258,34 +1276,42 @@ static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFla +@@ -1177,17 +1186,28 @@ static void check_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFl dwSize = 0; - hr = pUrlCombineA(szUrl1, szUrl2, NULL, &dwSize, dwFlags); + hr = UrlCombineA(szUrl1, szUrl2, NULL, &dwSize, dwFlags); ok(hr == E_POINTER, "Checking length of string, return was 0x%08x, expected 0x%08x\n", hr, E_POINTER); - ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); + ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); dwSize--; - hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); + hr = UrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); ok(hr == E_POINTER, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, E_POINTER); - ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); + ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); - hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); - ok(hr == dwExpectReturn, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn); -- ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize, dwExpectLen); -- if(SUCCEEDED(hr)) { -- ok(strcmp(szReturnUrl,szExpectUrl)==0, "Expected %s, but got %s\n", szExpectUrl, szReturnUrl); + hr = UrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize, dwExpectLen); +- ok(!strcmp(szReturnUrl, szExpectUrl), "Expected %s, got %s.\n", szExpectUrl, szReturnUrl); + + if (todo) + { @@ -89,37 +72,19 @@ index 4f1f15b6e2c..04281a7a77d 100644 + ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize, dwExpectLen); + if (SUCCEEDED(hr)) + ok(strcmp(szReturnUrl, szExpectUrl)==0, "Expected %s, but got %s\n", szExpectUrl, szReturnUrl); - } ++ } - if (pUrlCombineW) { - dwSize = 0; - hr = pUrlCombineW(wszUrl1, wszUrl2, NULL, &dwSize, dwFlags); - ok(hr == E_POINTER, "Checking length of string, return was 0x%08x, expected 0x%08x\n", hr, E_POINTER); -- ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); -+ ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); - - dwSize--; - hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags); - ok(hr == E_POINTER, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, E_POINTER); -- ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); -+ ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); - - hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags); - ok(hr == dwExpectReturn, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn); -- ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize, dwExpectLen); -+ ok(todo || dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize, dwExpectLen); - if(SUCCEEDED(hr)) { - wszConvertedUrl = GetWideString(szReturnUrl); - ok(lstrcmpW(wszReturnUrl, wszConvertedUrl)==0, "Strings didn't match between ansi and unicode UrlCombine!\n"); -@@ -1305,7 +1331,7 @@ static void test_UrlCombine(void) + dwSize = 0; + hr = UrlCombineW(wszUrl1, wszUrl2, NULL, &dwSize, dwFlags); +@@ -1218,7 +1238,7 @@ static void test_UrlCombine(void) + { unsigned int i; for (i = 0; i < ARRAY_SIZE(TEST_COMBINE); i++) { - test_url_combine(TEST_COMBINE[i].url1, TEST_COMBINE[i].url2, TEST_COMBINE[i].flags, -- TEST_COMBINE[i].expectret, TEST_COMBINE[i].expecturl); -+ TEST_COMBINE[i].expectret, TEST_COMBINE[i].expecturl, TEST_COMBINE[i].todo); +- check_url_combine(TEST_COMBINE[i].url1, TEST_COMBINE[i].url2, TEST_COMBINE[i].flags, TEST_COMBINE[i].expecturl); ++ check_url_combine(TEST_COMBINE[i].url1, TEST_COMBINE[i].url2, TEST_COMBINE[i].flags, TEST_COMBINE[i].expecturl, TEST_COMBINE[i].todo); } } -- -2.33.0 +2.34.1 diff --git a/patches/shlwapi-UrlCombine/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch b/patches/shlwapi-UrlCombine/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch index 4785a664..8c682d72 100644 --- a/patches/shlwapi-UrlCombine/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch +++ b/patches/shlwapi-UrlCombine/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch @@ -1,33 +1,18 @@ -From 2f01abc1d6018646cdaa94e087b1a0444c31a0c7 Mon Sep 17 00:00:00 2001 +From 38ec9774394d778a1f2fdbafb3e80eaf111a5edb Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 17 Jan 2014 01:27:53 +0100 -Subject: shlwapi: UrlCombineW workaround for relative paths +Subject: [PATCH] shlwapi: UrlCombineW workaround for relative paths --- - dlls/shlwapi/tests/url.c | 4 ++-- - dlls/shlwapi/url.c | 5 ++++- - 2 files changed, 6 insertions(+), 3 deletions(-) + dlls/kernelbase/path.c | 5 ++++- + dlls/shlwapi/tests/url.c | 2 ++ + 2 files changed, 6 insertions(+), 1 deletion(-) -diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c -index ecbdfab..8a99f7e 100644 ---- a/dlls/shlwapi/tests/url.c -+++ b/dlls/shlwapi/tests/url.c -@@ -338,8 +338,8 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { - {"http://www.winehq.org/test14#aaa/bbb#ccc", "#", 0, S_OK, "http://www.winehq.org/test14#"}, - {"http://www.winehq.org/tests/?query=x/y/z", "tests15", 0, S_OK, "http://www.winehq.org/tests/tests15"}, - {"http://www.winehq.org/tests/?query=x/y/z#example", "tests16", 0, S_OK, "http://www.winehq.org/tests/tests16"}, -- {"http://www.winehq.org/tests17", ".", 0, S_OK, "http://www.winehq.org/", TRUE}, -- {"http://www.winehq.org/tests18/test", ".", 0, S_OK, "http://www.winehq.org/tests18/", TRUE}, -+ {"http://www.winehq.org/tests17", ".", 0, S_OK, "http://www.winehq.org/"}, -+ {"http://www.winehq.org/tests18/test", ".", 0, S_OK, "http://www.winehq.org/tests18/"}, - {"http://www.winehq.org/tests19/test", "./", 0, S_OK, "http://www.winehq.org/tests19/", FALSE}, - {"http://www.winehq.org/tests20/test", "/", 0, S_OK, "http://www.winehq.org/", FALSE}, - {"http://www.winehq.org/tests/test", "./test21", 0, S_OK, "http://www.winehq.org/tests/test21", FALSE}, diff --git a/dlls/kernelbase/path.c b/dlls/kernelbase/path.c -index 82708be5444..8d2739b40e8 100644 +index 07457dcfc1b..665d0bb7355 100644 --- a/dlls/kernelbase/path.c +++ b/dlls/kernelbase/path.c -@@ -4990,7 +4990,10 @@ HRESULT WINAPI UrlCombineW(const WCHAR *baseW, const WCHAR *relativeW, WCHAR *co +@@ -4926,7 +4926,10 @@ HRESULT WINAPI UrlCombineW(const WCHAR *baseW, const WCHAR *relativeW, WCHAR *co work = preliminary + base.cchProtocol + 1 + base.cchSuffix - 1; if (*work++ != '/') *(work++) = '/'; @@ -39,6 +24,19 @@ index 82708be5444..8d2739b40e8 100644 break; default: +diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c +index 8e17969d0c5..d696061377c 100644 +--- a/dlls/shlwapi/tests/url.c ++++ b/dlls/shlwapi/tests/url.c +@@ -369,6 +369,8 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = { + {"http://www.winehq.org/test14#aaa/bbb#ccc", "#", 0, "http://www.winehq.org/test14#"}, + {"http://www.winehq.org/tests/?query=x/y/z", "tests15", 0, "http://www.winehq.org/tests/tests15"}, + {"http://www.winehq.org/tests/?query=x/y/z#example", "tests16", 0, "http://www.winehq.org/tests/tests16"}, ++ {"http://www.winehq.org/tests17", ".", 0, "http://www.winehq.org/"}, ++ {"http://www.winehq.org/tests18/test", ".", 0, "http://www.winehq.org/tests18/"}, + {"file:///C:\\dir\\file.txt", "test.txt", 0, "file:///C:/dir/test.txt"}, + {"file:///C:\\dir\\file.txt#hash\\hash", "test.txt", 0, "file:///C:/dir/file.txt#hash/test.txt"}, + {"file:///C:\\dir\\file.html#hash\\hash", "test.html", 0, "file:///C:/dir/test.html"}, -- -1.7.9.5 +2.34.1 diff --git a/patches/user32-Mouse_Message_Hwnd/0005-server-Add-support-for-a-layered-window-region.-v2.patch b/patches/user32-Mouse_Message_Hwnd/0005-server-Add-support-for-a-layered-window-region.-v2.patch index 88371b8f..fef6904a 100644 --- a/patches/user32-Mouse_Message_Hwnd/0005-server-Add-support-for-a-layered-window-region.-v2.patch +++ b/patches/user32-Mouse_Message_Hwnd/0005-server-Add-support-for-a-layered-window-region.-v2.patch @@ -1,20 +1,20 @@ -From bd18d7e21494557615c398244a4e180e44a11e25 Mon Sep 17 00:00:00 2001 +From af8ff96fc86939f89544deea506116064384bf28 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 17 May 2017 23:55:55 +0800 Subject: [PATCH] server: Add support for a layered window region. (v3) --- dlls/user32/tests/input.c | 2 -- - dlls/winex11.drv/bitblt.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ - server/protocol.def | 7 +++++++ - server/window.c | 32 ++++++++++++++++++++++++++++++++ + dlls/winex11.drv/bitblt.c | 45 +++++++++++++++++++++++++++++++++++++++ + server/protocol.def | 7 ++++++ + server/window.c | 32 ++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 2 deletions(-) diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c -index 858e7d6..5fa15af 100644 +index 07856c402a0..0265695de21 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c -@@ -2388,13 +2388,11 @@ static void test_Input_mouse(void) +@@ -3695,13 +3695,11 @@ static void test_Input_mouse(void) if (msg.message == WM_LBUTTONDOWN) { @@ -29,7 +29,7 @@ index 858e7d6..5fa15af 100644 got_button_up = TRUE; break; diff --git a/dlls/winex11.drv/bitblt.c b/dlls/winex11.drv/bitblt.c -index 0343d96..b07c9be 100644 +index fad183b0b01..a6fbb755a7e 100644 --- a/dlls/winex11.drv/bitblt.c +++ b/dlls/winex11.drv/bitblt.c @@ -48,6 +48,7 @@ @@ -40,7 +40,7 @@ index 0343d96..b07c9be 100644 #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(bitblt); -@@ -1612,6 +1613,48 @@ static inline void add_row( HRGN rgn, RGNDATA *data, int x, int y, int len ) +@@ -1613,6 +1614,48 @@ static inline void add_row( HRGN rgn, RGNDATA *data, int x, int y, int len ) } #endif @@ -89,7 +89,7 @@ index 0343d96..b07c9be 100644 /*********************************************************************** * update_surface_region */ -@@ -1630,6 +1673,7 @@ static void update_surface_region( struct x11drv_window_surface *surface ) +@@ -1631,6 +1674,7 @@ static void update_surface_region( struct x11drv_window_surface *surface ) if (!surface->is_argb && surface->color_key == CLR_INVALID) { XShapeCombineMask( gdi_display, surface->window, ShapeBounding, 0, 0, None, ShapeSet ); @@ -97,7 +97,7 @@ index 0343d96..b07c9be 100644 return; } -@@ -1740,6 +1784,7 @@ static void update_surface_region( struct x11drv_window_surface *surface ) +@@ -1741,6 +1785,7 @@ static void update_surface_region( struct x11drv_window_surface *surface ) HeapFree( GetProcessHeap(), 0, data ); } @@ -106,10 +106,10 @@ index 0343d96..b07c9be 100644 #endif } diff --git a/server/protocol.def b/server/protocol.def -index f48fd00..f3aa6f1 100644 +index b6135a24f5d..cfa774d45d2 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -2775,6 +2775,13 @@ enum coords_relative +@@ -2493,6 +2493,13 @@ enum coords_relative @END @@ -124,10 +124,10 @@ index f48fd00..f3aa6f1 100644 @REQ(get_update_region) user_handle_t window; /* handle to the window */ diff --git a/server/window.c b/server/window.c -index c9b131c..766bf51 100644 +index ec8ee2f1790..24059aac0fe 100644 --- a/server/window.c +++ b/server/window.c -@@ -73,6 +73,7 @@ struct window +@@ -71,6 +71,7 @@ struct window rectangle_t surface_rect; /* window surface rectangle (relative to parent client area) */ rectangle_t client_rect; /* client rectangle (relative to parent client area) */ struct region *win_region; /* region for shaped windows (relative to window rect) */ @@ -135,7 +135,7 @@ index c9b131c..766bf51 100644 struct region *update_region; /* update region (relative to window rect) */ unsigned int style; /* window style */ unsigned int ex_style; /* window extended style */ -@@ -494,6 +495,7 @@ static struct window *create_window( struct window *parent, struct window *owner +@@ -560,6 +561,7 @@ static struct window *create_window( struct window *parent, struct window *owner win->atom = atom; win->last_active = win->handle; win->win_region = NULL; @@ -143,7 +143,7 @@ index c9b131c..766bf51 100644 win->update_region = NULL; win->style = 0; win->ex_style = 0; -@@ -723,6 +725,9 @@ static int is_point_in_window( struct window *win, int *x, int *y, unsigned int +@@ -803,6 +805,9 @@ static int is_point_in_window( struct window *win, int *x, int *y, unsigned int if (win->win_region && !point_in_region( win->win_region, *x - win->window_rect.left, *y - win->window_rect.top )) return 0; /* not in window region */ @@ -153,7 +153,7 @@ index c9b131c..766bf51 100644 return 1; } -@@ -1868,6 +1873,14 @@ static void set_window_region( struct window *win, struct region *region, int re +@@ -1948,6 +1953,14 @@ static void set_window_region( struct window *win, struct region *region, int re } @@ -166,17 +166,17 @@ index c9b131c..766bf51 100644 + + /* destroy a window */ - void destroy_window( struct window *win ) + void free_window_handle( struct window *win ) { -@@ -1916,6 +1929,7 @@ void destroy_window( struct window *win ) - +@@ -2011,6 +2024,7 @@ void free_window_handle( struct window *win ) detach_window_thread( win ); - if (win->win_region) free_region( win->win_region ); + + if (win->parent) set_parent_window( win, NULL ); + if (win->layer_region) free_region( win->layer_region ); - if (win->update_region) free_region( win->update_region ); - if (win->class) release_class( win->class ); - free( win->text ); -@@ -2569,6 +2583,24 @@ DECL_HANDLER(set_window_region) + free_user_handle( win->handle ); + win->handle = 0; + release_object( win ); +@@ -2667,6 +2681,24 @@ DECL_HANDLER(set_window_region) } @@ -202,5 +202,5 @@ index c9b131c..766bf51 100644 DECL_HANDLER(get_update_region) { -- -1.9.1 +2.34.1 diff --git a/staging/upstream-commit b/staging/upstream-commit index 621db751..3613f784 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -576cdea0d75498ed948d0ba66a3451ea426f7935 +d9f3ea328785d4146a095ce2efbdbb7c1f69f1cf