From f079b2b2b60c2d65bf5d9bb831c197fb4a1d2cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 18 Nov 2012 14:21:21 +0000 Subject: [PATCH] [CONSRV] - 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 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/win32ss/user/consrv/conoutput.c b/win32ss/user/consrv/conoutput.c index 0e92bc2ff41..d6849bed389 100644 --- a/win32ss/user/consrv/conoutput.c +++ b/win32ss/user/consrv/conoutput.c @@ -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; }