mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against d9f3ea328785d4146a095ce2efbdbb7c1f69f1cf.
This commit is contained in:
parent
00b2e468d3
commit
b5193cb799
@ -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 <sebastian@fds-team.de>
|
||||
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,
|
||||
|
@ -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 <z.figura12@gmail.com>
|
||||
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 =
|
||||
|
@ -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
|
||||
|
@ -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 <leslie_alistair@hotmail.com>
|
||||
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 <leslie_alistair@hotmail.com>
|
||||
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
|
||||
|
||||
|
@ -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 <sebastian@fds-team.de>
|
||||
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
|
||||
|
||||
|
@ -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 <sebastian@fds-team.de>
|
||||
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
|
||||
|
||||
|
@ -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 <dmitry@baikal.ru>
|
||||
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
|
||||
|
||||
|
@ -1 +1 @@
|
||||
576cdea0d75498ed948d0ba66a3451ea426f7935
|
||||
d9f3ea328785d4146a095ce2efbdbb7c1f69f1cf
|
||||
|
Loading…
Reference in New Issue
Block a user