https://git.reactos.org/?p=reactos.git;a=commitdiff;h=aa84645bccda8d7095f60…
commit aa84645bccda8d7095f6053cae67b1e9bf816345
Author: Andrew Dent <dent.ace(a)gmail.com>
AuthorDate: Wed Sep 20 22:56:06 2023 +0100
Commit: Stanislav Motylkov <x86corez(a)gmail.com>
CommitDate: Sat Sep 23 15:54:39 2023 +0300
[THEMES] Optimize png for Lautus style (#5712)
Lossless optimization of new png Start button in Lautus style, original by @Splitwirez (ed134bf2, #5540).
Slimmed 464 bytes, ~20% saving. This png is encoded as a grayscale+alpha, so should be tested.
---
.../lautus.msstyles/bitmaps/NORMAL_STARTBUTTON.png | Bin 2341 -> 1877 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/media/themes/Lautus/lautus.msstyles/bitmaps/NORMAL_STARTBUTTON.png b/media/themes/Lautus/lautus.msstyles/bitmaps/NORMAL_STARTBUTTON.png
index 5508ccbc79f..c79d4711f09 100644
Binary files a/media/themes/Lautus/lautus.msstyles/bitmaps/NORMAL_STARTBUTTON.png and b/media/themes/Lautus/lautus.msstyles/bitmaps/NORMAL_STARTBUTTON.png differ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=88808bad8a29213bc51ca…
commit 88808bad8a29213bc51ca54db265e9425a457981
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Sun Sep 10 14:35:20 2023 +0300
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Sat Sep 23 11:06:24 2023 +0300
[RPCRT4] Fix x64 assembly code
movaps is a 128 bit aligned move, we need a 64 bit unaligned move, so use movsd.
Fixes a crash in oleaut32_winetest tmarshal.
Also add a comment about the use of movd instead of movq.
---
dll/win32/rpcrt4/msvc.S | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/dll/win32/rpcrt4/msvc.S b/dll/win32/rpcrt4/msvc.S
index fca5ee5e612..a1da254285b 100644
--- a/dll/win32/rpcrt4/msvc.S
+++ b/dll/win32/rpcrt4/msvc.S
@@ -62,9 +62,9 @@ FUNC call_stubless_func
add rdx, [rcx + 8] /* info->ProcFormatString + offset */
mov rcx, [rcx] /* info->pStubDesc */
- movaps [rsp + 20h], xmm1
- movaps [rsp + 28h], xmm2
- movaps [rsp + 30h], xmm3
+ movsd qword ptr [rsp + 20h], xmm1
+ movsd qword ptr [rsp + 28h], xmm2
+ movsd qword ptr [rsp + 30h], xmm3
lea r9, [rsp + 18h] /* fpu_args */
call ndr_client_call
add rsp, 38h
@@ -97,6 +97,14 @@ FUNC call_server_func
mov rdx, [rsp + 8]
mov r8, [rsp + 16]
mov r9, [rsp + 24]
+
+ /* Usually the 64 bit SSE2 version of movd is called movq, as in GCC code
+ (see https://www.felixcloutier.com/x86/movd:movq). But there is another
+ movq with different encoding, which does not accept an integer register
+ as source (see https://www.felixcloutier.com/x86/movq). Older versions
+ of ML64 get confused and do not accept movq with integer registers,
+ but they translate movd to 64 bit, when 64 bit registers are used as
+ source, so we use that here. */
movd xmm0, rcx
movd xmm1, rdx
movd xmm2, r8
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4661bc006d0e49e78b1eb…
commit 4661bc006d0e49e78b1ebaee9509e078f12c70a8
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Fri Aug 18 08:35:59 2023 +0300
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Thu Sep 21 23:45:31 2023 +0300
[WIN32K] Prevent dereferencing NULL pointer
Initialize a window's ThreadListEntry as an empty list on creation and only remove the window from the list on destruction, when the entry is not an empty list. Previously the window creation could fail before the list entry was initialized and the window would get destroyed after that, resulting in a NULL pointer dereference.
---
win32ss/user/ntuser/window.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/win32ss/user/ntuser/window.c b/win32ss/user/ntuser/window.c
index e4a7b1affd6..27881a1cdf9 100644
--- a/win32ss/user/ntuser/window.c
+++ b/win32ss/user/ntuser/window.c
@@ -596,7 +596,8 @@ LRESULT co_UserFreeWindow(PWND Window,
/* remove the window already at this point from the thread window list so we
don't get into trouble when destroying the thread windows while we're still
in co_UserFreeWindow() */
- RemoveEntryList(&Window->ThreadListEntry);
+ if (!IsListEmpty(&Window->ThreadListEntry))
+ RemoveEntryList(&Window->ThreadListEntry);
BelongsToThreadData = IntWndBelongsToThread(Window, ThreadData);
@@ -1917,6 +1918,7 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs,
pWnd->HideAccel = pWnd->spwndParent->HideAccel;
}
+ InitializeListHead(&pWnd->ThreadListEntry);
pWnd->head.pti->cWindows++;
if (Class->spicn && !Class->spicnSm)