Author: mjmartin
Date: Sat Aug 28 23:55:27 2010
New Revision: 48636
URL: http://svn.reactos.org/svn/reactos?rev=48636&view=rev
Log:
[win32k]
- Mouse messages can be sent before the desktop is initialized. Check for this and return false if its not. FIxes assert when moving mouse before desktop is up.
Modified:
trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] Sat Aug 28 23:55:27 2010
@@ -350,6 +350,10 @@
PWINDOW_OBJECT CaptureWindow = NULL;
HWND hCaptureWin;
+ /* FIXME: Mouse message can be sent before the Desktop is up and running in which case ScopeWin (Desktop) is 0.
+ Is this the best fix? */
+ if (ScopeWin == 0) return FALSE;
+
ASSERT_REFS_CO(ScopeWin);
/*
Author: mjmartin
Date: Sat Aug 28 23:23:43 2010
New Revision: 48635
URL: http://svn.reactos.org/svn/reactos?rev=48635&view=rev
Log:
[input/i8042prt]
- Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running.
Modified:
trunk/reactos/drivers/input/i8042prt/mouse.c
Modified: trunk/reactos/drivers/input/i8042prt/mouse.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/mou…
==============================================================================
--- trunk/reactos/drivers/input/i8042prt/mouse.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/input/i8042prt/mouse.c [iso-8859-1] Sat Aug 28 23:23:43 2010
@@ -49,7 +49,7 @@
DeviceExtension->MouseComplete = TRUE;
DeviceExtension->MouseInBuffer++;
- if (DeviceExtension->MouseInBuffer > DeviceExtension->Common.PortDeviceExtension->Settings.MouseDataQueueSize)
+ if (DeviceExtension->MouseInBuffer >= DeviceExtension->Common.PortDeviceExtension->Settings.MouseDataQueueSize)
{
WARN_(I8042PRT, "Mouse buffer overflow\n");
DeviceExtension->MouseInBuffer--;
Author: mjmartin
Date: Sat Aug 28 00:26:02 2010
New Revision: 48632
URL: http://svn.reactos.org/svn/reactos?rev=48632&view=rev
Log:
[ntoskrnl/ps]
- When deleting a Process remove the Process from the MmProcessList. Fixes random NonPaged Pool corruptions. Thanks aicom for assistance.
Modified:
trunk/reactos/ntoskrnl/ps/kill.c
Modified: trunk/reactos/ntoskrnl/ps/kill.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/kill.c?rev=486…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/kill.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ps/kill.c [iso-8859-1] Sat Aug 28 00:26:02 2010
@@ -300,6 +300,8 @@
/* Detach */
KeUnstackDetachProcess(&ApcState);
+
+ RemoveEntryList(&Process->MmProcessLinks);
/* Completely delete the Address Space */
MmDeleteProcessAddressSpace(Process);
Author: mjmartin
Date: Fri Aug 27 22:18:10 2010
New Revision: 48631
URL: http://svn.reactos.org/svn/reactos?rev=48631&view=rev
Log:
[ntoskrnl/ps]
- Acquire and Release RundownProtection on the Parent Pocess not the newly created Pcess when setting the SectionObject.
Modified:
trunk/reactos/ntoskrnl/ps/process.c
Modified: trunk/reactos/ntoskrnl/ps/process.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/process.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/process.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ps/process.c [iso-8859-1] Fri Aug 27 22:18:10 2010
@@ -469,14 +469,14 @@
if (Parent != PsInitialSystemProcess)
{
/* It's not, so acquire the process rundown */
- if (ExAcquireRundownProtection(&Process->RundownProtect))
+ if (ExAcquireRundownProtection(&Parent->RundownProtect))
{
/* If the parent has a section, use it */
SectionObject = Parent->SectionObject;
if (SectionObject) ObReferenceObject(SectionObject);
/* Release process rundown */
- ExReleaseRundownProtection(&Process->RundownProtect);
+ ExReleaseRundownProtection(&Parent->RundownProtect);
}
/* If we don't have a section object */