[ros-diffs] [janderwald] 27177: - release lock on error

janderwald at svn.reactos.org janderwald at svn.reactos.org
Thu Jun 14 21:51:20 CEST 2007


Author: janderwald
Date: Thu Jun 14 23:51:19 2007
New Revision: 27177

URL: http://svn.reactos.org/svn/reactos?rev=27177&view=rev
Log:
- release lock on error

Modified:
    trunk/reactos/subsystems/win32/csrss/win32csr/conio.c

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/conio.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/conio.c?rev=27177&r1=27176&r2=27177&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/conio.c (original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/conio.c Thu Jun 14 23:51:19 2007
@@ -2574,11 +2574,19 @@
   if (! ConioGetIntersection(&SrcRegion, &ScreenBuffer, &ScrollRectangle))
     {
       ConioUnlockScreenBuffer(Buff);
+      if (NULL != Console)
+        {
+          ConioUnlockConsole(Console);
+        }
       return Request->Status = STATUS_INVALID_PARAMETER;
     }
 
   if (UseClipRectangle && ! ConioGetIntersection(&SrcRegion, &SrcRegion, &ClipRectangle))
     {
+      if (NULL != Console)
+        {
+          ConioUnlockConsole(Console);
+        }
       ConioUnlockScreenBuffer(Buff);
       return Request->Status = STATUS_SUCCESS;
     }
@@ -2593,6 +2601,10 @@
   /* Make sure destination rectangle is inside the screen buffer */
   if (! ConioGetIntersection(&DstRegion, &DstRegion, &ScreenBuffer))
     {
+      if (NULL != Console)
+        {
+          ConioUnlockConsole(Console);
+        }
       ConioUnlockScreenBuffer(Buff);
       return Request->Status = STATUS_INVALID_PARAMETER;
     }
@@ -2663,6 +2675,10 @@
   Status = ConioLockScreenBuffer(ProcessData, Request->Data.ReadConsoleOutputCharRequest.ConsoleHandle, &Buff);
   if (! NT_SUCCESS(Status))
     {
+      if (NULL != Console)
+        {
+          ConioUnlockConsole(Console);
+        }
       return Request->Status = Status;
     }
 




More information about the Ros-diffs mailing list