Compare commits

...

56 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
b09545bc48 Release v10.12 2025-07-12 20:06:05 +10:00
Alistair Leslie-Hughes
8c98aa0c22 Added msxml_normalize_line patchset 2025-07-12 15:22:15 +10:00
Alistair Leslie-Hughes
31cab243e7 Added comctl32_animate_avi patchset 2025-07-11 19:33:15 +10:00
Alistair Leslie-Hughes
caa47e6c73 Rebase against d1f6b3771376cc8909be712b127125e1b9e4f5d1. 2025-07-11 08:16:46 +10:00
Alistair Leslie-Hughes
d102a32693 Rebase against 177848adf54f6871e558be6b42ee2478a522c3d2. 2025-07-09 09:35:33 +10:00
Alistair Leslie-Hughes
784382204b Updated msxml3-element_props patchset
Add missing patch.
2025-07-08 15:54:55 +10:00
Alistair Leslie-Hughes
3e94d12465 Release v10.11 2025-06-28 14:10:47 +10:00
Alistair Leslie-Hughes
f102154244 Updated vkd3d-latest patchset 2025-06-27 08:23:40 +10:00
Alistair Leslie-Hughes
26c1f46d89 Rebase against 80bc1338bea7d9dac78ab449b4505e5bb91e7ba3. 2025-06-27 08:16:31 +10:00
Elizabeth Figura
8dd91084bf Rebase against 1c586991c802a7368137ae2c0470880bb359de78. 2025-06-25 19:31:10 -05:00
Alistair Leslie-Hughes
e232cccc6a Updated vkd3d-latest patchset 2025-06-25 10:56:46 +10:00
Alistair Leslie-Hughes
2ed03c4ed0 Rebase against 69e3a51b3dc50dd1697c64f7b2bcde54baa0a300. 2025-06-25 10:56:05 +10:00
Elizabeth Figura
5054f7359b Rebase against 7f0fac46d718e0961314d0c50342dcf336b9803d. 2025-06-23 16:47:48 -05:00
Alistair Leslie-Hughes
7db26cf727 Rebase against e9dcdf38041a1911d37117e0219dced5ba5dbf7f. 2025-06-22 18:07:01 +10:00
Elizabeth Figura
1d80a4ba4e Rebase against 057e1d73e84b06fac90cba96dbf0305d219df3d5. 2025-06-19 16:36:06 -05:00
Alistair Leslie-Hughes
5cc4d90333 Rebase against 73b75afe55144727775e8a865f82ed843c19b3bb. 2025-06-19 11:06:28 +10:00
Alistair Leslie-Hughes
a044166651 Updated vkd3d-latest patchset
Squash and rebase.
2025-06-18 10:25:22 +10:00
Alistair Leslie-Hughes
c37f9f5091 Release v10.10 2025-06-14 16:15:47 +10:00
Alistair Leslie-Hughes
b3f1bf0856 Rebase against 885446556ce443b496e368b8f2c68807dcc7df0f. 2025-06-14 15:22:25 +10:00
Alistair Leslie-Hughes
4de57fff29 Updated vkd3d-latest patchset 2025-06-13 08:26:56 +10:00
Alistair Leslie-Hughes
52ba925f90 Rebase against 19441ac8046556a0118d6b59838dfd408fa56fdd. 2025-06-13 07:55:01 +10:00
Alistair Leslie-Hughes
cc517dd949 Updated vkd3d-latest patchset 2025-06-11 07:54:27 +10:00
Alistair Leslie-Hughes
a9be5cf2b0 Updated vkd3d-latest patchset 2025-06-06 07:11:56 +10:00
Elizabeth Figura
df97d6c328 Rebase against 5063ab8a805e77b9b9dfe5587fb38981923e422d. 2025-06-02 16:03:11 -05:00
Alistair Leslie-Hughes
b4006fc038 Release v10.9 2025-06-02 08:14:05 +10:00
Alistair Leslie-Hughes
d1cc8d0fa5 Added kernel32-limit_heap_old_exe patchset 2025-06-02 07:48:53 +10:00
Alistair Leslie-Hughes
ef72380f02 Rebase against e0bb1dba3d6fdff61a6f98a4ca7d6af4438e21d4. 2025-05-29 10:06:53 +10:00
Alistair Leslie-Hughes
1b2e959b75 Updated vkd3d-latest patchset 2025-05-28 07:36:25 +10:00
Alistair Leslie-Hughes
31a37e3f3c Rebase against 371929471ddcac9358d6de238296ba115170a3fa. 2025-05-28 07:36:03 +10:00
Alistair Leslie-Hughes
a3738434e0 Rebase against 22af42ac22279e6c0c671f033661f95c1761b4bb. 2025-05-24 07:53:59 +10:00
Alistair Leslie-Hughes
554a64f6b3 Rebase against 8f91df4c4e4fb8b32c737bb02e82dcddfb71a114. 2025-05-22 07:44:21 +10:00
Alistair Leslie-Hughes
7f2c4b8613 Rebase against a550040d94de646c65f4013337b5cce89383b634. 2025-05-21 07:45:33 +10:00
Alistair Leslie-Hughes
47f77594ab Release v10.8 2025-05-17 11:30:37 +10:00
Alistair Leslie-Hughes
4adf613941 Rebase against 0ac1033f04074339de5cae9ffd9f4f45baaef92e. 2025-05-16 08:09:23 +10:00
Alistair Leslie-Hughes
b3fc3b367a Updated vkd3d-latest patchset 2025-05-15 08:02:49 +10:00
Alistair Leslie-Hughes
0b9581fa6a Rebase against 09539a3af5f806bf319917cafff2b07e6480d656. 2025-05-15 08:02:24 +10:00
Alistair Leslie-Hughes
06a7d6349e Updated vkd3d-latest patchset 2025-05-13 09:05:49 +10:00
Alistair Leslie-Hughes
86a7c93cdd Rebase against f9741837a3bff3a912442695b4f7c3f5efbef557. 2025-05-09 13:30:18 +10:00
Alistair Leslie-Hughes
abf4b4db07 Updated odbc32-fixes patchset
Some older ANSI drivers have a limit on the number of environment handles that
can be created.  So reuse existing environment variable for each connection
when possible.
2025-05-08 12:15:16 +10:00
Alistair Leslie-Hughes
b4d8b2f64f Rebase against d8a271c053bb23171355854d7af155b3bda7e8a9. 2025-05-08 12:14:47 +10:00
Alistair Leslie-Hughes
092b56c39c Updated vkd3d-latest patchset 2025-05-07 07:49:36 +10:00
Alistair Leslie-Hughes
2cd8221624 Rebase against 226a7eeabbc13345e49da1ff8c018d6f06211c66. 2025-05-06 07:55:00 +10:00
Alistair Leslie-Hughes
e855d43a60 Updated vkd3d-latest patchset
Squash and Update.
2025-05-06 06:58:56 +10:00
Alistair Leslie-Hughes
f95009bb3e Updated odbc32-fixes patchset
Corrected Commit ascii to ANSI.
Reset patch numbers.
Convert SQL_C_WCHAR to SQL_CHAR when required for ANSI driver.
2025-05-05 11:54:43 +10:00
Alistair Leslie-Hughes
edfe4935ff Release v10.7 2025-05-03 15:42:07 +10:00
Alistair Leslie-Hughes
b8110be095 Updated odbc32-fixes patchset
Convert of type needs to occur not matter if fallback is being used.
2025-05-02 11:14:22 +10:00
Alistair Leslie-Hughes
42a307df67 Updated odbc32-fixes patchset
More support for the PostgreSQL ODBC ascii driver.
2025-05-01 08:42:13 +10:00
Alistair Leslie-Hughes
c89fe8069e Updated vkd3d-latest patchset 2025-05-01 06:49:44 +10:00
Alistair Leslie-Hughes
eff3de6ad2 Updated odbc32-fixes patchset 2025-04-30 14:13:01 +10:00
Alistair Leslie-Hughes
9f89b77e8f Updated vkd3d-latest patchset 2025-04-29 08:02:01 +10:00
Elizabeth Figura
74dd8bdd2a Rebase against e646263a6f048156d5cb9c63b094cd9c80d5bfb6. 2025-04-28 16:59:26 -05:00
Alistair Leslie-Hughes
f01e66252c Updated odbc32-fixes patchset
Completed patchset to get PostgreSQL ASCII driver working.
2025-04-28 11:21:27 +10:00
Alistair Leslie-Hughes
353a868136 Updated odbc32-fixes patchset
Attempt to get PostgreSQL ascii ODBC driver working.
2025-04-26 19:19:26 +10:00
Alistair Leslie-Hughes
ee5092247c Updated vkd3d-latest patchset 2025-04-26 09:07:11 +10:00
Alistair Leslie-Hughes
e54c70a009 Rebase against f7503d0a996ae1243dd6c87b39a9143624a80465. 2025-04-26 09:03:13 +10:00
Elizabeth Figura
1b8ab6cb68 Rebase against ba6adef9bfc209f1247ba88acec64b58d97100c3. 2025-04-21 17:29:53 -05:00
91 changed files with 25085 additions and 29862 deletions

View File

@@ -1,4 +1,4 @@
From 8aa6fb73e3142d86ba354c204313b8a74a5fa43d Mon Sep 17 00:00:00 2001
From fb422ad56e3549e81d3b60afc77b0a0c6a56f672 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:53:46 +0200
Subject: [PATCH] winelib: Append '(Staging)' at the end of the version string.
@@ -8,10 +8,10 @@ Subject: [PATCH] winelib: Append '(Staging)' at the end of the version string.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index f86a5decb07..3d7f9cc96e6 100644
index b4ede761391..ea6bd2fae3c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3910,7 +3910,7 @@ dnl Rules for generated source files
@@ -3728,7 +3728,7 @@ dnl Rules for generated source files
WINE_APPEND_RULE(
[dlls/ntdll/unix/version.c: dummy
@@ -19,7 +19,7 @@ index f86a5decb07..3d7f9cc96e6 100644
+ @version=\`(GIT_DIR=${wine_srcdir}.git git describe HEAD 2>/dev/null || echo \"wine-\$(PACKAGE_VERSION)\") | sed -n -e '\$\$s/\(.*\)/const char wine_build[[]] = \"\\1 (Staging)\";/p'\` && (echo \$\$version | cmp -s - \$[@]) || echo \$\$version >\$[@] || (rm -f \$[@] && exit 1)
programs/winetest/build.rc: dummy
@build=\"STRINGTABLE { 1 \\\"\`GIT_DIR=${wine_srcdir}.git git rev-parse HEAD 2>/dev/null\`\\\" }\" && (echo \$\$build | cmp -s - \$[@]) || echo \$\$build >\$[@] || (rm -f \$[@] && exit 1)
programs/winetest/build.nfo:
dlls/wineandroid.drv/wine-debug.apk: dlls/wineandroid.drv/build.gradle ${wine_srcdir}dlls/wineandroid.drv/AndroidManifest.xml ${wine_srcdir}dlls/wineandroid.drv/WineActivity.java ${wine_srcdir}dlls/wineandroid.drv/wine.svg
--
2.33.0
2.47.2

View File

@@ -1,4 +1,4 @@
From f9f5002e4ce6417dd196d53b50c51a3b224015d3 Mon Sep 17 00:00:00 2001
From 9cf09446b0bf5da7988d1ba30c24d392c7a01f4b Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 12 Nov 2019 18:13:20 +0800
Subject: [PATCH] comctl32: Bump version to 6.0.
@@ -8,39 +8,25 @@ and refuses to run, changing DLL version to 6.0 makes it run.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/comctl32/comctl32.h | 2 +-
dlls/comctl32/comctl32.rc | 2 +-
include/commctrl.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/comctl32.h b/dlls/comctl32/comctl32.h
index 51f4337add2..3fe8905abea 100644
--- a/dlls/comctl32/comctl32.h
+++ b/dlls/comctl32/comctl32.h
@@ -194,7 +194,7 @@ BOOL Str_SetPtrAtoW(LPWSTR *lppDest, LPCSTR lpSrc);
BOOL Str_SetPtrWtoA(LPSTR *lppDest, LPCWSTR lpSrc);
BOOL imagelist_has_alpha(HIMAGELIST, UINT);
-#define COMCTL32_VERSION_MINOR 81
+#define COMCTL32_VERSION_MINOR 0
/* Our internal stack structure of the window procedures to subclass */
typedef struct _SUBCLASSPROCS {
diff --git a/dlls/comctl32/comctl32.rc b/dlls/comctl32/comctl32.rc
index c9aa1ba6253..be6e2425193 100644
index 2c62dbe2720..473de211c67 100644
--- a/dlls/comctl32/comctl32.rc
+++ b/dlls/comctl32/comctl32.rc
@@ -114,7 +114,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
@@ -113,7 +113,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define WINE_FILEDESCRIPTION_STR "Wine Common Controls"
#define WINE_FILENAME_STR "comctl32.dll"
#define WINE_FILEVERSION COMCTL32_VERSION, COMCTL32_VERSION_MINOR, 4704, 1100
-#define WINE_FILEVERSION_STR "5.81"
+#define WINE_FILEVERSION_STR "6.00.4704.1100"
#define WINE_PRODUCTVERSION WINE_FILEVERSION
#define WINE_PRODUCTVERSION_STR WINE_FILEVERSION_STR
-#define WINE_FILEVERSION COMCTL32_VERSION,81,4704,1100
+#define WINE_FILEVERSION COMCTL32_VERSION,0,4704,1100
#include "wine/wine_common_ver.rc"
diff --git a/include/commctrl.h b/include/commctrl.h
index a54de13d8b2..e0b0e22d4dc 100644
index 235704a76dd..5a67c1284a0 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -59,7 +59,7 @@ enum _LI_METRIC
@@ -53,5 +39,5 @@ index a54de13d8b2..e0b0e22d4dc 100644
#define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */
#define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */
--
2.40.1
2.47.2

View File

@@ -0,0 +1,24 @@
From 8a9c55d23750ca2650eba518e46549d8b5d94b43 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 11 Jul 2025 14:11:36 +1000
Subject: [PATCH] comctl32: Animate support AVI msvc codex
---
dlls/comctl32/animate.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index 46e1e37b72d..717422c784f 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -644,6 +644,7 @@ static BOOL ANIMATE_GetAviCodec(ANIMATE_INFO *infoPtr)
/* check uncompressed AVI */
if ((infoPtr->ash.fccHandler == mmioFOURCC('D', 'I', 'B', ' ')) ||
(infoPtr->ash.fccHandler == mmioFOURCC('R', 'L', 'E', ' ')) ||
+ (infoPtr->ash.fccHandler == mmioFOURCC('m', 's', 'v', 'c')) ||
(infoPtr->ash.fccHandler == mmioFOURCC(0, 0, 0, 0)))
{
infoPtr->hic = 0;
--
2.47.2

View File

@@ -0,0 +1,24 @@
From b8cce6663a956f8fb8f07700672e378b44b1af1c Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 11 Jul 2025 15:21:07 +1000
Subject: [PATCH] comctl32: Animate to support RLE8 codex
---
dlls/comctl32/animate.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index 717422c784f..ca4fae85a11 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -645,6 +645,7 @@ static BOOL ANIMATE_GetAviCodec(ANIMATE_INFO *infoPtr)
if ((infoPtr->ash.fccHandler == mmioFOURCC('D', 'I', 'B', ' ')) ||
(infoPtr->ash.fccHandler == mmioFOURCC('R', 'L', 'E', ' ')) ||
(infoPtr->ash.fccHandler == mmioFOURCC('m', 's', 'v', 'c')) ||
+ (infoPtr->ash.fccHandler == mmioFOURCC('m', 'r', 'l', 'e')) ||
(infoPtr->ash.fccHandler == mmioFOURCC(0, 0, 0, 0)))
{
infoPtr->hic = 0;
--
2.47.2

View File

@@ -0,0 +1,119 @@
From 2ef9715ae9fffa0a6d7cdf0dc04e8de7eb245ce4 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 11 Jul 2025 18:07:39 +1000
Subject: [PATCH] comctl32: Animate control doesn't support compressed AVI
The Animate control only supporst uncompress AVI with the excpetion of RLE8.
---
dlls/comctl32/animate.c | 64 ++---------------------------------------
1 file changed, 3 insertions(+), 61 deletions(-)
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index ca4fae85a11..74516db81f5 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -39,14 +39,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(animate);
-static struct {
- HMODULE hModule;
- HIC (WINAPI *fnICOpen)(DWORD, DWORD, UINT);
- LRESULT (WINAPI *fnICClose)(HIC);
- LRESULT (WINAPI *fnICSendMessage)(HIC, UINT, DWORD_PTR, DWORD_PTR);
- DWORD (WINAPIV *fnICDecompress)(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
-} fnIC;
-
typedef struct
{
/* reference to input stream (file or resource) */
@@ -189,11 +181,6 @@ static void ANIMATE_Free(ANIMATE_INFO *infoPtr)
}
Free (infoPtr->lpIndex);
infoPtr->lpIndex = NULL;
- if (infoPtr->hic)
- {
- fnIC.fnICClose(infoPtr->hic);
- infoPtr->hic = 0;
- }
Free (infoPtr->inbih);
infoPtr->inbih = NULL;
Free (infoPtr->outbih);
@@ -342,13 +329,6 @@ static BOOL ANIMATE_DrawFrame(ANIMATE_INFO *infoPtr, HDC hDC)
mmioSeek(infoPtr->hMMio, infoPtr->lpIndex[infoPtr->currFrame], SEEK_SET);
mmioRead(infoPtr->hMMio, infoPtr->indata, infoPtr->ash.dwSuggestedBufferSize);
- if (infoPtr->hic &&
- fnIC.fnICDecompress(infoPtr->hic, 0, infoPtr->inbih, infoPtr->indata,
- infoPtr->outbih, infoPtr->outdata) != ICERR_OK) {
- WARN("Decompression error\n");
- return FALSE;
- }
-
ANIMATE_PaintFrame(infoPtr, hDC);
if (infoPtr->currFrame++ >= infoPtr->nToFrame) {
@@ -649,39 +629,12 @@ static BOOL ANIMATE_GetAviCodec(ANIMATE_INFO *infoPtr)
(infoPtr->ash.fccHandler == mmioFOURCC(0, 0, 0, 0)))
{
infoPtr->hic = 0;
- return TRUE;
- }
-
- /* try to get a decompressor for that type */
- infoPtr->hic = fnIC.fnICOpen(ICTYPE_VIDEO, infoPtr->ash.fccHandler, ICMODE_DECOMPRESS);
- if (!infoPtr->hic) {
- WARN("Can't load codec for the file\n");
- return FALSE;
- }
-
- outSize = fnIC.fnICSendMessage(infoPtr->hic, ICM_DECOMPRESS_GET_FORMAT,
- (DWORD_PTR)infoPtr->inbih, 0L);
-
- if (!(infoPtr->outbih = Alloc(outSize)))
- return FALSE;
-
- if (fnIC.fnICSendMessage(infoPtr->hic, ICM_DECOMPRESS_GET_FORMAT,
- (DWORD_PTR)infoPtr->inbih, (DWORD_PTR)infoPtr->outbih) != ICERR_OK)
- {
- WARN("Can't get output BIH\n");
- return FALSE;
+ return TRUE;
}
- if (!(infoPtr->outdata = Alloc(infoPtr->outbih->biSizeImage)))
- return FALSE;
+ FIXME("Unsupported %s\n", debugstr_fourcc(infoPtr->ash.fccHandler));
- if (fnIC.fnICSendMessage(infoPtr->hic, ICM_DECOMPRESS_BEGIN,
- (DWORD_PTR)infoPtr->inbih, (DWORD_PTR)infoPtr->outbih) != ICERR_OK) {
- WARN("Can't begin decompression\n");
- return FALSE;
- }
-
- return TRUE;
+ return FALSE;
}
@@ -790,17 +743,6 @@ static BOOL ANIMATE_Create(HWND hWnd, const CREATESTRUCTW *lpcs)
{
ANIMATE_INFO *infoPtr;
- if (!fnIC.hModule)
- {
- fnIC.hModule = LoadLibraryW(L"msvfw32.dll");
- if (!fnIC.hModule) return FALSE;
-
- fnIC.fnICOpen = (void*)GetProcAddress(fnIC.hModule, "ICOpen");
- fnIC.fnICClose = (void*)GetProcAddress(fnIC.hModule, "ICClose");
- fnIC.fnICSendMessage = (void*)GetProcAddress(fnIC.hModule, "ICSendMessage");
- fnIC.fnICDecompress = (void*)GetProcAddress(fnIC.hModule, "ICDecompress");
- }
-
/* allocate memory for info structure */
infoPtr = Alloc(sizeof(*infoPtr));
if (!infoPtr) return FALSE;
--
2.47.2

View File

@@ -0,0 +1,2 @@
Fixes: [52278] comctl32: Animate support AVI msvc codex.

View File

@@ -1,4 +1,4 @@
From 27e2bc1b0d098abce9168ea46589024054817e25 Mon Sep 17 00:00:00 2001
From 52be83d9a557eec924a964944e6b926fb1e347ad Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:01:56 -0500
Subject: [PATCH] server: Create eventfd file descriptors for message queues.
@@ -8,10 +8,10 @@ Subject: [PATCH] server: Create eventfd file descriptors for message queues.
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c
index ee575724e4e..60f0c043257 100644
index a3479055ed4..08635c047b2 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -44,6 +44,7 @@
@@ -45,6 +45,7 @@
#include "process.h"
#include "request.h"
#include "user.h"
@@ -19,15 +19,15 @@ index ee575724e4e..60f0c043257 100644
#define WM_NCMOUSEFIRST WM_NCMOUSEMOVE
#define WM_NCMOUSELAST (WM_NCMOUSEFIRST+(WM_MOUSELAST-WM_MOUSEFIRST))
@@ -144,6 +145,7 @@ struct msg_queue
@@ -135,6 +136,7 @@ struct msg_queue
int keystate_lock; /* owns an input keystate lock */
const queue_shm_t *shared; /* queue in session shared memory */
queue_shm_t *shared; /* queue in session shared memory */
unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */
+ int esync_fd; /* esync file descriptor (signalled on message) */
};
struct hotkey
@@ -160,6 +162,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
@@ -151,6 +153,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
static int msg_queue_add_queue( struct object *obj, struct wait_queue_entry *entry );
static void msg_queue_remove_queue( struct object *obj, struct wait_queue_entry *entry );
static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entry );
@@ -35,7 +35,7 @@ index ee575724e4e..60f0c043257 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry );
static void msg_queue_destroy( struct object *obj );
static void msg_queue_poll_event( struct fd *fd, int event );
@@ -175,7 +178,7 @@ static const struct object_ops msg_queue_ops =
@@ -166,7 +169,7 @@ static const struct object_ops msg_queue_ops =
msg_queue_add_queue, /* add_queue */
msg_queue_remove_queue, /* remove_queue */
msg_queue_signaled, /* signaled */
@@ -44,7 +44,7 @@ index ee575724e4e..60f0c043257 100644
msg_queue_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -313,6 +316,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -317,6 +320,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
queue->last_get_msg = current_time;
queue->keystate_lock = 0;
queue->ignore_post_msg = 0;
@@ -52,7 +52,7 @@ index ee575724e4e..60f0c043257 100644
list_init( &queue->send_result );
list_init( &queue->callback_result );
list_init( &queue->pending_timers );
@@ -335,6 +339,9 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -339,6 +343,9 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
}
SHARED_WRITE_END;
@@ -62,7 +62,7 @@ index ee575724e4e..60f0c043257 100644
thread->queue = queue;
if ((desktop = get_thread_desktop( thread, 0 )))
@@ -685,6 +692,9 @@ static inline void clear_queue_bits( struct msg_queue *queue, unsigned int bits
@@ -753,6 +760,9 @@ static inline void clear_queue_bits( struct msg_queue *queue, unsigned int bits
if (queue->keystate_lock) unlock_input_keystate( queue->input );
queue->keystate_lock = 0;
}
@@ -72,7 +72,7 @@ index ee575724e4e..60f0c043257 100644
}
/* check if message is matched by the filter */
@@ -1227,6 +1237,13 @@ static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entr
@@ -1335,6 +1345,13 @@ static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entr
return ret || is_signaled( queue );
}
@@ -86,7 +86,7 @@ index ee575724e4e..60f0c043257 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry )
{
struct msg_queue *queue = (struct msg_queue *)obj;
@@ -1278,6 +1295,7 @@ static void msg_queue_destroy( struct object *obj )
@@ -1391,6 +1408,7 @@ static void msg_queue_destroy( struct object *obj )
if (queue->hooks) release_object( queue->hooks );
if (queue->fd) release_object( queue->fd );
if (queue->shared) free_shared_object( queue->shared );
@@ -94,7 +94,7 @@ index ee575724e4e..60f0c043257 100644
}
static void msg_queue_poll_event( struct fd *fd, int event )
@@ -3000,6 +3018,9 @@ DECL_HANDLER(set_queue_mask)
@@ -3181,6 +3199,9 @@ DECL_HANDLER(set_queue_mask)
}
else wake_up( &queue->obj, 0 );
}
@@ -104,7 +104,7 @@ index ee575724e4e..60f0c043257 100644
}
}
@@ -3020,6 +3041,9 @@ DECL_HANDLER(get_queue_status)
@@ -3201,6 +3222,9 @@ DECL_HANDLER(get_queue_status)
shared->changed_bits &= ~req->clear_bits;
}
SHARED_WRITE_END;
@@ -114,7 +114,7 @@ index ee575724e4e..60f0c043257 100644
}
else reply->wake_bits = reply->changed_bits = 0;
}
@@ -3286,6 +3310,10 @@ DECL_HANDLER(get_message)
@@ -3469,6 +3493,10 @@ DECL_HANDLER(get_message)
SHARED_WRITE_END;
set_error( STATUS_PENDING ); /* FIXME */
@@ -126,5 +126,5 @@ index ee575724e4e..60f0c043257 100644
found_msg:
--
2.43.0
2.47.2

View File

@@ -1,4 +1,4 @@
From 7522f4cf4bb29413bce97be5e61ebaefb5276c77 Mon Sep 17 00:00:00 2001
From c9d64a429d4343f4ceb53ae28ecc380aaa42b09e Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:11:23 -0500
Subject: [PATCH] server, ntdll: Implement message waits.
@@ -10,10 +10,10 @@ Subject: [PATCH] server, ntdll: Implement message waits.
3 files changed, 77 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index 399930c444b..06d7d8babc6 100644
index b2204d44ed9..3af79a2de15 100644
--- a/dlls/ntdll/unix/esync.c
+++ b/dlls/ntdll/unix/esync.c
@@ -474,12 +474,13 @@ static void update_grabbed_object( struct esync *obj )
@@ -476,12 +476,13 @@ static void update_grabbed_object( struct esync *obj )
/* A value of STATUS_NOT_IMPLEMENTED returned from this function means that we
* need to delegate to server_select(). */
@@ -28,7 +28,7 @@ index 399930c444b..06d7d8babc6 100644
LONGLONG timeleft;
LARGE_INTEGER now;
ULONGLONG end;
@@ -507,6 +508,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -509,6 +510,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
return ret;
}
@@ -38,7 +38,7 @@ index 399930c444b..06d7d8babc6 100644
if (has_esync && has_server)
FIXME("Can't wait on esync and server objects at the same time!\n");
else if (has_server)
@@ -518,6 +522,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -520,6 +524,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
for (i = 0; i < count; i++)
TRACE(" %p", handles[i]);
@@ -48,7 +48,7 @@ index 399930c444b..06d7d8babc6 100644
if (!timeout)
TRACE(", timeout = INFINITE.\n");
else
@@ -557,7 +564,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -559,7 +566,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
int64_t value;
ssize_t size;
@@ -59,7 +59,7 @@ index 399930c444b..06d7d8babc6 100644
{
/* Don't grab the object, just check if it's signaled. */
if (fds[i].revents & POLLIN)
@@ -602,6 +611,44 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -604,6 +613,44 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
}
}
@@ -105,10 +105,10 @@ index 399930c444b..06d7d8babc6 100644
{
struct stat st;
diff --git a/server/protocol.def b/server/protocol.def
index 56f2d263100..46cdbbed9b7 100644
index 86040d5b619..c2fdec93b8d 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3968,6 +3968,10 @@ enum esync_type
@@ -4121,6 +4121,10 @@ enum esync_type
unsigned int shm_idx;
@END
@@ -120,18 +120,18 @@ index 56f2d263100..46cdbbed9b7 100644
@REQ(set_keyboard_repeat)
int enable; /* whether to enable auto-repeat */
diff --git a/server/queue.c b/server/queue.c
index 60f0c043257..d6b6f2f20aa 100644
index 08635c047b2..8f1a68acd7f 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -146,6 +146,7 @@ struct msg_queue
const queue_shm_t *shared; /* queue in session shared memory */
@@ -137,6 +137,7 @@ struct msg_queue
queue_shm_t *shared; /* queue in session shared memory */
unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */
int esync_fd; /* esync file descriptor (signalled on message) */
+ int esync_in_msgwait; /* our thread is currently waiting on us */
};
struct hotkey
@@ -317,6 +318,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -321,6 +322,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
queue->keystate_lock = 0;
queue->ignore_post_msg = 0;
queue->esync_fd = -1;
@@ -139,7 +139,7 @@ index 60f0c043257..d6b6f2f20aa 100644
list_init( &queue->send_result );
list_init( &queue->callback_result );
list_init( &queue->pending_timers );
@@ -1183,6 +1185,10 @@ static int is_queue_hung( struct msg_queue *queue )
@@ -1291,6 +1293,10 @@ static int is_queue_hung( struct msg_queue *queue )
if (get_wait_queue_thread(entry)->queue == queue)
return 0; /* thread is waiting on queue -> not hung */
}
@@ -150,7 +150,7 @@ index 60f0c043257..d6b6f2f20aa 100644
return 1;
}
@@ -4079,6 +4085,23 @@ DECL_HANDLER(update_rawinput_devices)
@@ -4281,6 +4287,23 @@ DECL_HANDLER(update_rawinput_devices)
}
}
@@ -174,11 +174,11 @@ index 60f0c043257..d6b6f2f20aa 100644
DECL_HANDLER(set_keyboard_repeat)
{
struct desktop *desktop;
@@ -4097,3 +4120,4 @@ DECL_HANDLER(set_keyboard_repeat)
@@ -4299,3 +4322,4 @@ DECL_HANDLER(set_keyboard_repeat)
release_object( desktop );
}
+
--
2.43.0
2.47.2

View File

@@ -1,4 +1,4 @@
From 5f5cfac7099cf4e5be912f07a66665f8217f57f3 Mon Sep 17 00:00:00 2001
From 50f9168ed92d261de21615b250dfac115160cc2e Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 17:17:31 -0500
Subject: [PATCH] ntdll, server: Implement alertable waits.
@@ -15,10 +15,10 @@ Subject: [PATCH] ntdll, server: Implement alertable waits.
8 files changed, 109 insertions(+), 9 deletions(-)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index 2844f9f760c..aeeea1731ce 100644
index f805af251bb..a80019b76dd 100644
--- a/dlls/ntdll/unix/esync.c
+++ b/dlls/ntdll/unix/esync.c
@@ -599,17 +599,42 @@ static void update_grabbed_object( struct esync *obj )
@@ -601,17 +601,42 @@ static void update_grabbed_object( struct esync *obj )
static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any,
BOOLEAN alertable, const LARGE_INTEGER *timeout )
{
@@ -62,7 +62,7 @@ index 2844f9f760c..aeeea1731ce 100644
NtQuerySystemTime( &now );
if (timeout)
{
@@ -648,6 +673,8 @@ static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEA
@@ -650,6 +675,8 @@ static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEA
if (msgwait)
TRACE(" or driver events");
@@ -71,7 +71,7 @@ index 2844f9f760c..aeeea1731ce 100644
if (!timeout)
TRACE(", timeout = INFINITE.\n");
@@ -684,12 +711,27 @@ static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEA
@@ -686,12 +713,27 @@ static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEA
fds[i].fd = obj ? obj->fd : -1;
fds[i].events = POLLIN;
}
@@ -100,7 +100,7 @@ index 2844f9f760c..aeeea1731ce 100644
/* Find out which object triggered the wait. */
for (i = 0; i < count; i++)
{
@@ -763,6 +805,14 @@ static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEA
@@ -765,6 +807,14 @@ static NTSTATUS __esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEA
tryagain:
/* First step: try to poll on each object in sequence. */
fds[0].events = POLLIN;
@@ -115,7 +115,7 @@ index 2844f9f760c..aeeea1731ce 100644
for (i = 0; i < count; i++)
{
struct esync *obj = objs[i];
@@ -778,9 +828,11 @@ tryagain:
@@ -780,9 +830,11 @@ tryagain:
continue;
}
@@ -128,7 +128,7 @@ index 2844f9f760c..aeeea1731ce 100644
if (fds[0].revents & (POLLHUP | POLLERR | POLLNVAL))
{
@@ -796,10 +848,12 @@ tryagain:
@@ -798,10 +850,12 @@ tryagain:
fds[i].fd = objs[i] ? objs[i]->fd : -1;
fds[i].events = POLLIN;
}
@@ -143,7 +143,7 @@ index 2844f9f760c..aeeea1731ce 100644
{
/* Quick, grab everything. */
for (i = 0; i < count; i++)
@@ -865,6 +919,19 @@ err:
@@ -867,6 +921,19 @@ err:
ERR("ppoll failed: %s\n", strerror(errno));
return errno_to_status( errno );
}
@@ -164,22 +164,22 @@ index 2844f9f760c..aeeea1731ce 100644
/* We need to let the server know when we are doing a message wait, and when we
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index b278ab8df84..a3f0368b731 100644
index b9043351d57..283fd7d7ff6 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -93,6 +93,7 @@ struct ntdll_thread_data
{
void *cpu_data[16]; /* reserved for CPU-specific data */
void *kernel_stack; /* stack for thread startup and kernel syscalls */
+ int esync_apc_fd; /* fd to wait on for user APCs */
int request_fd; /* fd for sending server requests */
int reply_fd; /* fd for receiving server replies */
int wait_fd[2]; /* fd for sleeping server requests */
@@ -105,6 +105,7 @@ struct ntdll_thread_data
SYSTEM_SERVICE_TABLE *syscall_table; /* 214/0370 syscall table */
struct syscall_frame *syscall_frame; /* 218/0378 current syscall frame */
int syscall_trace; /* 21c/0380 syscall trace flag */
+ int esync_apc_fd; /* fd to wait on for user APCs */
int request_fd; /* fd for sending server requests */
int reply_fd; /* fd for receiving server replies */
int wait_fd[2]; /* fd for sleeping server requests */
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 2116b677adb..a7d0bb7e8c8 100644
index c797c89952f..0778ad73984 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -3646,6 +3646,7 @@ static TEB *init_teb( void *ptr, BOOL is_wow )
@@ -4014,6 +4014,7 @@ static TEB *init_teb( void *ptr, BOOL is_wow )
teb->StaticUnicodeString.Buffer = teb->StaticUnicodeBuffer;
teb->StaticUnicodeString.MaximumLength = sizeof(teb->StaticUnicodeBuffer);
thread_data = (struct ntdll_thread_data *)&teb->GdiTebBatch;
@@ -244,10 +244,10 @@ index 689d8569b73..e1588d205d9 100644
void esync_clear( int fd );
diff --git a/server/protocol.def b/server/protocol.def
index 8c728080d05..3ea700054c6 100644
index 807298b6bab..a2dcdd37204 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3935,3 +3935,7 @@ enum esync_type
@@ -4148,3 +4148,7 @@ enum esync_type
@REPLY
int enable; /* previous state of auto-repeat enable */
@END
@@ -256,10 +256,10 @@ index 8c728080d05..3ea700054c6 100644
+@REQ(get_esync_apc_fd)
+@END
diff --git a/server/thread.c b/server/thread.c
index fd6b91b228a..8d7c520ced7 100644
index 11c36e49ae4..3a771838a98 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -232,6 +232,7 @@ static inline void init_thread_structure( struct thread *thread )
@@ -400,6 +400,7 @@ static inline void init_thread_structure( struct thread *thread )
thread->teb = 0;
thread->entry_point = 0;
thread->esync_fd = -1;
@@ -267,7 +267,7 @@ index fd6b91b228a..8d7c520ced7 100644
thread->system_regs = 0;
thread->queue = NULL;
thread->wait = NULL;
@@ -380,7 +381,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
@@ -550,7 +551,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
}
if (do_esync())
@@ -278,7 +278,7 @@ index fd6b91b228a..8d7c520ced7 100644
set_fd_events( thread->request_fd, POLLIN ); /* start listening to events */
add_process_thread( thread->process, thread );
@@ -1174,8 +1178,13 @@ static int queue_apc( struct process *process, struct thread *thread, struct thr
@@ -1384,8 +1388,13 @@ static int queue_apc( struct process *process, struct thread *thread, struct thr
grab_object( apc );
list_add_tail( queue, &apc->entry );
if (!list_prev( queue, &apc->entry )) /* first one */
@@ -292,7 +292,7 @@ index fd6b91b228a..8d7c520ced7 100644
return 1;
}
@@ -1221,6 +1230,10 @@ static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system
@@ -1431,6 +1440,10 @@ static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system
apc = LIST_ENTRY( ptr, struct thread_apc, entry );
list_remove( ptr );
}
@@ -304,10 +304,10 @@ index fd6b91b228a..8d7c520ced7 100644
}
diff --git a/server/thread.h b/server/thread.h
index 9129e473ba9..10e9e28b432 100644
index e826a7a25de..c320ac83af7 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -56,6 +56,7 @@ struct thread
@@ -57,6 +57,7 @@ struct thread
thread_id_t id; /* thread id */
struct list mutex_list; /* list of currently owned mutexes */
int esync_fd; /* esync file descriptor (signalled on exit) */
@@ -316,5 +316,5 @@ index 9129e473ba9..10e9e28b432 100644
struct msg_queue *queue; /* message queue */
struct thread_wait *wait; /* current wait condition if sleeping */
--
2.43.0
2.47.2

View File

@@ -1,4 +1,4 @@
From 9829e3c307e8019a3a2b9204d1133833863da5f1 Mon Sep 17 00:00:00 2001
From b4f92dd9311882607cedd7d247ddf3069ae33d8b Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sat, 7 Jul 2018 12:57:47 +0200
Subject: [PATCH] server: Create eventfd descriptors for pseudo-fd objects and
@@ -11,10 +11,10 @@ Subject: [PATCH] server: Create eventfd descriptors for pseudo-fd objects and
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/server/fd.c b/server/fd.c
index 6a1b89b0e54..8ba704344cf 100644
index 737f7ee67b9..01a055f8b2d 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -97,6 +97,7 @@
@@ -95,6 +95,7 @@
#include "handle.h"
#include "process.h"
#include "request.h"
@@ -22,7 +22,7 @@ index 6a1b89b0e54..8ba704344cf 100644
#include "winternl.h"
#include "winioctl.h"
@@ -198,6 +199,7 @@ struct fd
@@ -159,6 +160,7 @@ struct fd
struct completion *completion; /* completion object attached to this fd */
apc_param_t comp_key; /* completion key to set in completion events */
unsigned int comp_flags; /* completion flags */
@@ -40,7 +40,7 @@ index 6a1b89b0e54..8ba704344cf 100644
}
/* check if the desired access is possible without violating */
@@ -1784,6 +1789,7 @@ static struct fd *alloc_fd_object(void)
@@ -1786,6 +1791,7 @@ static struct fd *alloc_fd_object(void)
fd->poll_index = -1;
fd->completion = NULL;
fd->comp_flags = 0;
@@ -48,7 +48,7 @@ index 6a1b89b0e54..8ba704344cf 100644
init_async_queue( &fd->read_q );
init_async_queue( &fd->write_q );
init_async_queue( &fd->wait_q );
@@ -1823,11 +1829,15 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
@@ -1827,11 +1833,15 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use
fd->completion = NULL;
fd->comp_flags = 0;
fd->no_fd_status = STATUS_BAD_DEVICE_TYPE;
@@ -64,7 +64,7 @@ index 6a1b89b0e54..8ba704344cf 100644
return fd;
}
@@ -2268,6 +2278,9 @@ void set_fd_signaled( struct fd *fd, int signaled )
@@ -2283,6 +2293,9 @@ void set_fd_signaled( struct fd *fd, int signaled )
if (fd->comp_flags & FILE_SKIP_SET_EVENT_ON_HANDLE) return;
fd->signaled = signaled;
if (signaled) wake_up( fd->user, 0 );
@@ -74,7 +74,7 @@ index 6a1b89b0e54..8ba704344cf 100644
}
/* check if events are pending and if yes return which one(s) */
@@ -2293,6 +2306,15 @@ int default_fd_signaled( struct object *obj, struct wait_queue_entry *entry )
@@ -2324,6 +2337,15 @@ WCHAR *default_fd_get_full_name( struct object *obj, data_size_t max, data_size_
return ret;
}
@@ -91,19 +91,19 @@ index 6a1b89b0e54..8ba704344cf 100644
{
int events = 0;
diff --git a/server/file.h b/server/file.h
index 0ffe0e2c8dc..b5b1e2a1077 100644
index 7742e705e49..d86a9fc159d 100644
--- a/server/file.h
+++ b/server/file.h
@@ -106,6 +106,7 @@ extern char *dup_fd_name( struct fd *root, const char *name );
extern void get_nt_name( struct fd *fd, struct unicode_str *name );
@@ -110,6 +110,7 @@ extern void get_nt_name( struct fd *fd, struct unicode_str *name );
extern int default_fd_signaled( struct object *obj, struct wait_queue_entry *entry );
extern WCHAR *default_fd_get_full_name( struct object *obj, data_size_t max, data_size_t *ret_len );
+extern int default_fd_get_esync_fd( struct object *obj, enum esync_type *type );
extern int default_fd_get_poll_events( struct fd *fd );
extern void default_poll_event( struct fd *fd, int event );
extern void fd_cancel_async( struct fd *fd, struct async *async );
diff --git a/server/named_pipe.c b/server/named_pipe.c
index b8ec17a787a..e01b28f725a 100644
index cdb27ed45c0..d4f8cf5e964 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -168,7 +168,7 @@ static const struct object_ops pipe_server_ops =
@@ -125,5 +125,5 @@ index b8ec17a787a..e01b28f725a 100644
no_signal, /* signal */
pipe_end_get_fd, /* get_fd */
--
2.35.1
2.47.2

View File

@@ -2,3 +2,4 @@ Fixes: [36692] Many multi-threaded applications have poor performance due to hea
Depends: ntdll-Junction_Points
Depends: server-PeekMessage
Depends: server-Signal_Thread
Disabled: True

View File

@@ -0,0 +1,36 @@
From 764a3b19afc7519fa9568a402e094a944d56055c Mon Sep 17 00:00:00 2001
From: Akihiro Sagawa <sagawa.aki@gmail.com>
Date: Sun, 1 Jun 2025 15:42:40 +1000
Subject: [PATCH] kernel32: Limit old exe to 3MB available space
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=44931
---
dlls/kernel32/heap.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c
index 1ec2f5cce0d..834f4d07e9b 100644
--- a/dlls/kernel32/heap.c
+++ b/dlls/kernel32/heap.c
@@ -475,12 +475,15 @@ VOID WINAPI GlobalMemoryStatus( LPMEMORYSTATUS lpBuffer )
if ( lpBuffer->dwAvailPhys + lpBuffer->dwAvailPageFile >= 2U*1024*1024*1024)
lpBuffer->dwAvailPageFile = 2U*1024*1024*1024 - lpBuffer->dwAvailPhys - 1;
- /* limit page file size for really old binaries */
+ /* limit value for really old binaries */
+ /* use MAXLONG/2, so that dwAvailPhys + dwAvailPageFile < MAXLONG */
if (nt->OptionalHeader.MajorSubsystemVersion < 4 ||
nt->OptionalHeader.MajorOperatingSystemVersion < 4)
{
- if (lpBuffer->dwTotalPageFile > MAXLONG) lpBuffer->dwTotalPageFile = MAXLONG;
- if (lpBuffer->dwAvailPageFile > MAXLONG) lpBuffer->dwAvailPageFile = MAXLONG;
+ lpBuffer->dwTotalPhys = min(lpBuffer->dwTotalPhys, MAXLONG / 2);
+ lpBuffer->dwAvailPhys = min(lpBuffer->dwAvailPhys, MAXLONG / 2);
+ lpBuffer->dwTotalPageFile = min(lpBuffer->dwTotalPageFile, MAXLONG / 2);
+ lpBuffer->dwAvailPageFile = min(lpBuffer->dwAvailPageFile, MAXLONG / 2);
}
#endif
--
2.47.2

View File

@@ -0,0 +1 @@
Fixes: [44931] kernel32: Limit old exe to 3MB available space

View File

@@ -1,27 +1,28 @@
From 1de2ab4f1d48391f112897c2c89d4c1d77d4ac3f Mon Sep 17 00:00:00 2001
From 05dfee93e261b38037c370611ab0f63a2785a08c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 27 Feb 2016 00:04:10 +0100
Subject: krnl386.exe16: Emulate GDT and LDT access.
Subject: [PATCH] krnl386.exe16: Emulate GDT and LDT access.
---
dlls/krnl386.exe16/instr.c | 64 +++++++++++++++++++++++++++++++++++++++-------
1 file changed, 55 insertions(+), 9 deletions(-)
dlls/krnl386.exe16/instr.c | 65 ++++++++++++++++++++++++++++++++------
1 file changed, 56 insertions(+), 9 deletions(-)
diff --git a/dlls/krnl386.exe16/instr.c b/dlls/krnl386.exe16/instr.c
index b0de30f..865d944 100644
index 666ef71363f..c6d05b7a0c9 100644
--- a/dlls/krnl386.exe16/instr.c
+++ b/dlls/krnl386.exe16/instr.c
@@ -67,7 +67,7 @@ static inline void *get_stack( CONTEXT *context )
@@ -60,7 +60,8 @@ static inline void *get_stack( CONTEXT *context )
}
#include "pshpack1.h"
#pragma pack(push,1)
-struct idtr
+
+struct dtr
{
WORD limit;
BYTE *base;
@@ -75,19 +75,41 @@ struct idtr
#include "poppack.h"
@@ -68,19 +69,41 @@ struct idtr
#pragma pack(pop)
static LDT_ENTRY idt[256];
+static LDT_ENTRY gdt[8192];
@@ -35,6 +36,18 @@ index b0de30f..865d944 100644
+ struct dtr ret;
__asm__( "sidtl %0" : "=m" (ret) );
+ *offset = data - ret.base;
+ return (*offset <= ret.limit + 1 - data_size);
+#else
+ return FALSE;
+#endif
+}
+
+static BOOL emulate_gdtr( BYTE *data, unsigned int data_size, unsigned int *offset )
+{
+#if defined(__i386__) && defined(__GNUC__)
+ struct dtr ret;
+ __asm__( "sgdtl %0" : "=m" (ret) );
+ *offset = data - ret.base;
+ return (*offset <= ret.limit + 1 - data_size);
#else
- ret.base = (BYTE *)idt;
@@ -44,18 +57,6 @@ index b0de30f..865d944 100644
- return ret;
}
+static BOOL emulate_gdtr( BYTE *data, unsigned int data_size, unsigned int *offset )
+{
+#if defined(__i386__) && defined(__GNUC__)
+ struct dtr ret;
+ __asm__( "sgdtl %0" : "=m" (ret) );
+ *offset = data - ret.base;
+ return (*offset <= ret.limit + 1 - data_size);
+#else
+ return FALSE;
+#endif
+}
+
+static inline WORD get_ldt(void)
+{
+ WORD seg = 1;
@@ -67,7 +68,7 @@ index b0de30f..865d944 100644
/***********************************************************************
* INSTR_ReplaceSelector
@@ -711,10 +733,9 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
@@ -705,10 +728,9 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
BYTE *data = INSTR_GetOperandAddr(context, instr + 1, long_addr,
segprefix, &len);
unsigned int data_size = (*instr == 0x8b) ? (long_op ? 4 : 2) : 1;
@@ -80,7 +81,7 @@ index b0de30f..865d944 100644
{
idt[1].LimitLow = 0x100; /* FIXME */
idt[2].LimitLow = 0x11E; /* FIXME */
@@ -728,6 +749,31 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
@@ -722,6 +744,31 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
context->Eip += prefixlen + len + 1;
return ExceptionContinueExecution;
}
@@ -113,5 +114,5 @@ index b0de30f..865d944 100644
break; /* Unable to emulate it */
--
2.7.1
2.47.2

View File

@@ -1,4 +1,4 @@
From a808aeb6fbb9c7cace366a262715607379ca1b58 Mon Sep 17 00:00:00 2001
From fec0755a2826b69658dd5a894dc424a8e1111f1a Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 9 Jul 2019 14:13:28 +1000
Subject: [PATCH] user32: Do not enumerate the registry in
@@ -13,10 +13,10 @@ not the complete list from the registry.
3 files changed, 36 insertions(+), 33 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 00337aa72b7..375ca3abee3 100644
index 22c296cf213..70fa8009d3b 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -497,7 +497,6 @@ BOOL WINAPI UnloadKeyboardLayout( HKL layout )
@@ -450,7 +450,6 @@ BOOL WINAPI UnloadKeyboardLayout( HKL layout )
return FALSE;
}
@@ -25,10 +25,10 @@ index 00337aa72b7..375ca3abee3 100644
{
SendMessageTimeoutW(handle, WM_DEVICECHANGE, flags, (LPARAM)header, SMTO_ABORTIFHUNG, 2000, NULL);
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index b92e59396ac..364afc08b26 100644
index a82ca5941a2..eb565c6845b 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -5637,6 +5637,40 @@ static void test_LoadKeyboardLayoutEx(void)
@@ -6103,6 +6103,40 @@ static void test_LoadKeyboardLayoutEx( HKL orig_hkl )
ok_eq( old_hkl, GetKeyboardLayout( 0 ), HKL, "%p" );
}
@@ -69,19 +69,19 @@ index b92e59396ac..364afc08b26 100644
/* run the tests in a separate desktop to avoid interaction with other
* tests, current desktop state, or user actions. */
static void test_input_desktop( char **argv )
@@ -5730,6 +5764,7 @@ START_TEST(input)
@@ -6377,6 +6411,7 @@ START_TEST(input)
test_GetKeyState();
test_OemKeyScan();
test_rawinput(argv[0]);
+ test_GetKeyboardLayoutList();
test_DefRawInputProc();
test_ScheduleDispatchNotification();
if(pGetMouseMovePointsEx)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index 1886ff979d7..1834ae40441 100644
index 1f824f85c50..e51fe494b29 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -1266,11 +1266,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
@@ -1379,11 +1379,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
*/
UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
{
@@ -94,7 +94,7 @@ index 1886ff979d7..1834ae40441 100644
HKL layout;
TRACE_(keyboard)( "size %d, layouts %p.\n", size, layouts );
@@ -1284,33 +1280,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
@@ -1397,33 +1393,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
if (size && layouts)
{
layouts[count - 1] = layout;
@@ -129,5 +129,5 @@ index 1886ff979d7..1834ae40441 100644
return count;
--
2.43.0
2.47.2

View File

@@ -1,4 +1,4 @@
From 0d4a7cf6b9bb3a57a098762113ca1750c43a810e Mon Sep 17 00:00:00 2001
From e27b26f100bedf8f8374333ce9026fd96ed9102b Mon Sep 17 00:00:00 2001
From: Torge Matthies <tmatthies@codeweavers.com>
Date: Fri, 25 Oct 2024 10:47:30 +0200
Subject: [PATCH] mf/tests: Add network bytestream tests.
@@ -8,10 +8,10 @@ Subject: [PATCH] mf/tests: Add network bytestream tests.
1 file changed, 347 insertions(+)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index d0f1f1cf0a4..61daaf35741 100644
index 1070e9c1b2d..9d41b05fad3 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -4726,6 +4726,7 @@ static void test_evr(void)
@@ -4908,6 +4908,7 @@ static void test_evr(void)
hr = IMFActivate_ActivateObject(activate, &IID_IMFMediaSink, (void **)&sink);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -19,8 +19,8 @@ index d0f1f1cf0a4..61daaf35741 100644
check_interface(sink, &IID_IMFMediaSinkPreroll, TRUE);
check_interface(sink, &IID_IMFVideoRenderer, TRUE);
@@ -6803,6 +6804,351 @@ static void test_media_session_Close(void)
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -7130,6 +7131,351 @@ static void test_media_session_thinning(void)
ok(hr == S_OK, "Shutdown failure, hr %#lx.\n", hr);
}
+static void test_network_bytestream(void)
@@ -371,13 +371,14 @@ index d0f1f1cf0a4..61daaf35741 100644
START_TEST(mf)
{
init_functions();
@@ -6838,5 +7184,6 @@ START_TEST(mf)
@@ -7165,6 +7511,7 @@ START_TEST(mf)
test_media_session_Start();
test_MFEnumDeviceSources();
test_media_session_Close();
+ test_network_bytestream();
test_media_session_source_shutdown();
test_media_session_thinning();
}
--
2.45.2
2.47.2

View File

@@ -0,0 +1,97 @@
From 2135156d666a6a7a779326b7f1fdcbd2a8d58c8a Mon Sep 17 00:00:00 2001
From: Spencer Wallace <spencerwallace@esri.com>
Date: Mon, 24 Feb 2025 13:33:18 -0800
Subject: [PATCH] msxml3: Correct looping of Document Element properties.
---
dlls/msxml3/element.c | 2 ++
dlls/msxml3/tests/domdoc.c | 53 ++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+)
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 0fe72dcef9c..3e3c2d06169 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -1812,6 +1812,8 @@ static HRESULT domelem_get_item(const xmlNodePtr node, LONG index, IXMLDOMNode *
*item = create_node( (xmlNodePtr) curr );
return S_OK;
}
+
+ ++attrIndex;
}
if (!node->nsDef)
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index dcb83f781ba..84a1f330582 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -10224,6 +10224,15 @@ static void test_get_attributes(void)
L"xmlns:dcterms",
L"xmlns:foaf"
};
+ const WCHAR *attributes[] =
+ {
+ L"rdf:about",
+ L"dcterms:created",
+ L"xmlns:oslc_am",
+ L"xmlns:rdf",
+ L"xmlns:dcterms",
+ L"xmlns:foaf"
+ };
const get_attributes_t *entry = get_attributes;
IXMLDOMNamedNodeMap *map;
IXMLDOMDocument *doc, *doc2;
@@ -10505,6 +10514,50 @@ static void test_get_attributes(void)
IXMLDOMDocument_Release(doc);
+ str = SysAllocString(L"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ L"<rdf:RDF rdf:about=\"foo\""
+ L" dcterms:created=\"2025\""
+ L" xmlns:oslc_am=\"http://open-services.net/ns/am#\""
+ L" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\""
+ L" xmlns:dcterms=\"http://purl.org/dc/terms/\""
+ L" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" >"
+ L"</rdf:RDF>");
+
+ doc = create_document(&IID_IXMLDOMDocument2);
+
+ hr = IXMLDOMDocument_loadXML(doc, str, &b);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(b == VARIANT_TRUE, "got %d\n", b);
+
+ hr = IXMLDOMDocument_get_documentElement(doc, &elem);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ hr = IXMLDOMElement_get_attributes(elem, &map);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ length = -1;
+ hr = IXMLDOMNamedNodeMap_get_length(map, &length);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(length == 6, "length %#lx.\n", length);
+
+ for(i=0; i < length; i++)
+ {
+ hr = IXMLDOMNamedNodeMap_get_item(map, i, &node2);
+ ok( hr == S_OK, "Unexpected hr %#lx (%ld).\n", hr, i);
+
+ hr = IXMLDOMNode_get_nodeName(node2, &str);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(!lstrcmpW(str, attributes[i]), "got %s\n", wine_dbgstr_w(str));
+ SysFreeString(str);
+
+ IXMLDOMNode_Release(node2);
+ }
+
+ IXMLDOMNamedNodeMap_Release(map);
+ IXMLDOMElement_Release(elem);
+
+ IXMLDOMDocument_Release(doc);
+
free_bstrs();
}
--
2.47.2

View File

@@ -0,0 +1,46 @@
From 9be306cd143e6bf5f300a321101fb713edb9155b Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Sat, 12 Jul 2025 15:20:04 +1000
Subject: [PATCH] msxml: Support ISAXXMLReader::putFeature
normalize-line-breaks option
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=36686
---
dlls/msxml3/saxreader.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index 71a7f334420..9650af38597 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -60,7 +60,8 @@ typedef enum
SuppressValidationfatalError = 1 << 12,
UseInlineSchema = 1 << 13,
UseSchemaLocation = 1 << 14,
- LexicalHandlerParEntities = 1 << 15
+ LexicalHandlerParEntities = 1 << 15,
+ NormalizeLineBreaks = 1 << 16,
} saxreader_feature;
struct saxreader_feature_pair
@@ -78,6 +79,7 @@ static const struct saxreader_feature_pair saxreader_feature_map[] = {
{ Namespaces, L"http://xml.org/sax/features/namespaces" },
{ ProhibitDTD, L"prohibit-dtd" },
{ SchemaValidation, L"schema-validation" },
+ { NormalizeLineBreaks, L"normalize-line-breaks" },
};
static saxreader_feature get_saxreader_feature(const WCHAR *name)
@@ -3159,7 +3161,8 @@ static HRESULT WINAPI isaxxmlreader_putFeature(
if (feature == LexicalHandlerParEntities ||
feature == ProhibitDTD ||
feature == ExternalGeneralEntities ||
- feature == ExternalParameterEntities)
+ feature == ExternalParameterEntities ||
+ feature == NormalizeLineBreaks)
{
FIXME("(%p)->(%s %x) stub\n", This, debugstr_w(feature_name), value);
return set_feature_value(This, feature, value);
--
2.47.2

View File

@@ -0,0 +1,2 @@
Fixes: [36686] msxml: Support ISAXXMLReader::putFeature normalize-line-breaks option

View File

@@ -1,4 +1,4 @@
From e5c4a6bd332d7d125e9db79fa29b14e55e3a1ee5 Mon Sep 17 00:00:00 2001
From 32419947818521387ec9de7b5ca92f9269819bd2 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Mon, 25 Nov 2019 12:19:20 +0300
Subject: [PATCH] ntdll: Force virtual memory allocation order.
@@ -12,14 +12,14 @@ are from higher memory than they expect.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48175
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46568
---
dlls/ntdll/unix/virtual.c | 402 +++++++++++++++-----------------------
1 file changed, 162 insertions(+), 240 deletions(-)
dlls/ntdll/unix/virtual.c | 400 +++++++++++++++-----------------------
1 file changed, 162 insertions(+), 238 deletions(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index a36c919d47f..2f682e70ec2 100644
index 2353e51f5e8..a5270649c0d 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -1324,43 +1324,15 @@ static struct file_view *find_view_range( const void *addr, size_t size )
@@ -1492,43 +1492,15 @@ static struct file_view *find_view_range( const void *addr, size_t size )
}
@@ -71,7 +71,7 @@ index a36c919d47f..2f682e70ec2 100644
/***********************************************************************
* try_map_free_area
@@ -1393,112 +1365,6 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
@@ -1561,112 +1533,6 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
}
@@ -184,7 +184,7 @@ index a36c919d47f..2f682e70ec2 100644
/***********************************************************************
* remove_reserved_area
*
@@ -1613,8 +1479,7 @@ static void free_view( struct file_view *view )
@@ -1781,8 +1647,7 @@ static void free_view( struct file_view *view )
*/
static void unregister_view( struct file_view *view )
{
@@ -194,7 +194,7 @@ index a36c919d47f..2f682e70ec2 100644
wine_rb_remove( &views_tree, &view->entry );
}
@@ -1642,8 +1507,7 @@ static void delete_view( struct file_view *view ) /* [in] View */
@@ -1810,8 +1675,7 @@ static void delete_view( struct file_view *view ) /* [in] View */
static void register_view( struct file_view *view )
{
wine_rb_put( &views_tree, view->base, &view->entry );
@@ -204,7 +204,7 @@ index a36c919d47f..2f682e70ec2 100644
}
@@ -1919,89 +1783,176 @@ static inline void *unmap_extra_space( void *ptr, size_t total_size, size_t want
@@ -2099,89 +1963,176 @@ static inline void *unmap_extra_space( void *ptr, size_t total_size, size_t want
return ptr;
}
@@ -223,18 +223,18 @@ index a36c919d47f..2f682e70ec2 100644
+ char *alloc_start;
- if (preload_reserve_end >= end)
+ if (area->top_down)
{
- {
- if (preload_reserve_start <= start) return NULL; /* no space in that area */
- if (preload_reserve_start < end) end = preload_reserve_start;
- }
- else if (preload_reserve_start <= start)
+ if (area->top_down)
{
- if (preload_reserve_end > start) start = preload_reserve_end;
+ if (end - start < area->size) return NULL;
+ alloc_start = ROUND_ADDR( end - area->size, area->align_mask );
+ return try_map_free_area( start, alloc_start + area->size, area->step, alloc_start, area->size, area->unix_prot );
}
- else if (preload_reserve_start <= start)
- {
- if (preload_reserve_end > start) start = preload_reserve_end;
- }
- else /* range is split in two by the preloader reservation, try both parts */
+
+ alloc_start = ROUND_ADDR( start + area->align_mask, area->align_mask );
@@ -442,16 +442,16 @@ index a36c919d47f..2f682e70ec2 100644
}
/***********************************************************************
@@ -2112,43 +2063,12 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
@@ -2299,41 +2250,12 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
void *start = address_space_start;
void *end = min( user_space_limit, host_addr_space_limit );
size_t host_size = ROUND_SIZE( 0, size, host_page_mask );
- size_t unmap_size, view_size = host_size + align_mask + 1;
-
if (limit_low && (void *)limit_low > start) start = (void *)limit_low;
if (limit_high && (void *)limit_high < end) end = (char *)limit_high + 1;
- if ((ptr = map_reserved_area( start, end, host_size, top_down, get_unix_prot(vprot), align_mask )))
- if ((ptr = map_reserved_area( start, end, host_size, top_down, unix_prot, align_mask )))
- {
- TRACE( "got mem in reserved area %p-%p\n", ptr, (char *)ptr + size );
- goto done;
@@ -459,7 +459,7 @@ index a36c919d47f..2f682e70ec2 100644
-
- if (start > address_space_start || end < host_addr_space_limit || top_down)
- {
- if (!(ptr = map_free_area( start, end, host_size, top_down, get_unix_prot(vprot), align_mask )))
- if (!(ptr = map_free_area( start, end, host_size, top_down, unix_prot, align_mask )))
- return STATUS_NO_MEMORY;
- TRACE( "got mem with map_free_area %p-%p\n", ptr, (char *)ptr + size );
- goto done;
@@ -467,11 +467,11 @@ index a36c919d47f..2f682e70ec2 100644
-
- for (;;)
- {
- if ((ptr = anon_mmap_alloc( view_size, get_unix_prot(vprot) )) == MAP_FAILED)
- if ((ptr = anon_mmap_alloc( view_size, unix_prot )) == MAP_FAILED)
- {
- status = (errno == ENOMEM) ? STATUS_NO_MEMORY : STATUS_INVALID_PARAMETER;
- ERR( "anon mmap error %s, size %p, unix_prot %#x\n",
- strerror(errno), (void *)view_size, get_unix_prot( vprot ) );
- strerror(errno), (void *)view_size, unix_prot );
- return status;
- }
- TRACE( "got mem with anon mmap %p-%p\n", ptr, (char *)ptr + size );
@@ -481,14 +481,12 @@ index a36c919d47f..2f682e70ec2 100644
- if (unmap_size) munmap( ptr, unmap_size );
- }
- ptr = unmap_extra_space( ptr, view_size, host_size, align_mask );
+ if (!(ptr = alloc_free_area( start, end, host_size, top_down, get_unix_prot( vprot ), align_mask )))
+ if (!(ptr = alloc_free_area( start, end, host_size, top_down, unix_prot, align_mask )))
+ return STATUS_NO_MEMORY;
}
-done:
done:
status = create_view( view_ret, ptr, size, vprot );
if (status != STATUS_SUCCESS) unmap_area( ptr, size );
return status;
@@ -3413,6 +3333,7 @@ static unsigned int virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG_P
@@ -3602,6 +3524,7 @@ static unsigned int virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG_P
done:
server_leave_uninterrupted_section( &virtual_mutex, &sigset );
if (needs_close) close( unix_handle );
@@ -496,7 +494,7 @@ index a36c919d47f..2f682e70ec2 100644
return res;
}
@@ -6624,6 +6545,7 @@ NTSTATUS WINAPI NtWow64AllocateVirtualMemory64( HANDLE process, ULONG64 *ret, UL
@@ -6875,6 +6798,7 @@ NTSTATUS WINAPI NtWow64AllocateVirtualMemory64( HANDLE process, ULONG64 *ret, UL
*ret = (ULONG_PTR)base;
*size_ptr = size;
}
@@ -505,5 +503,5 @@ index a36c919d47f..2f682e70ec2 100644
}
--
2.49.0
2.47.2

Some files were not shown because too many files have changed in this diff Show More