[CONSRV]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 18 Nov 2012 14:21:21 +0000 (14:21 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 18 Nov 2012 14:21:21 +0000 (14:21 +0000)
- Use the ConsoleGetPerProcessData macro (--> CONSOLE_PROCESS_DATA structure).
- Do not forget to leave a critical section if we fail.

svn path=/branches/ros-csrss/; revision=57731

win32ss/user/consrv/conoutput.c

index 0e92bc2..d6849be 100644 (file)
@@ -1239,23 +1239,24 @@ CSR_API(CsrSetTextAttrib)
 
 CSR_API(SrvCreateConsoleScreenBuffer)
 {
+    NTSTATUS Status;
     PCSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.CreateScreenBufferRequest;
-    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
+    PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process);
     PCSRSS_CONSOLE Console;
     PCSRSS_SCREEN_BUFFER Buff;
-    NTSTATUS Status;
 
     DPRINT("SrvCreateConsoleScreenBuffer\n");
 
     RtlEnterCriticalSection(&ProcessData->HandleTableLock);
+
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (! NT_SUCCESS(Status))
+    if (!NT_SUCCESS(Status))
     {
+        RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
         return Status;
     }
 
     Buff = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
-
     if (Buff != NULL)
     {
         if (Console->ActiveBuffer)
@@ -1298,7 +1299,9 @@ CSR_API(SrvCreateConsoleScreenBuffer)
     }
 
     ConioUnlockConsole(Console);
+
     RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
+
     return Status;
 }