mirror of
https://github.com/reactos/reactos.git
synced 2024-09-08 19:59:49 +00:00
[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
This commit is contained in:
parent
a4ef6acb0a
commit
f079b2b2b6
|
@ -1239,23 +1239,24 @@ CSR_API(CsrSetTextAttrib)
|
||||||
|
|
||||||
CSR_API(SrvCreateConsoleScreenBuffer)
|
CSR_API(SrvCreateConsoleScreenBuffer)
|
||||||
{
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
PCSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.CreateScreenBufferRequest;
|
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_CONSOLE Console;
|
||||||
PCSRSS_SCREEN_BUFFER Buff;
|
PCSRSS_SCREEN_BUFFER Buff;
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
DPRINT("SrvCreateConsoleScreenBuffer\n");
|
DPRINT("SrvCreateConsoleScreenBuffer\n");
|
||||||
|
|
||||||
RtlEnterCriticalSection(&ProcessData->HandleTableLock);
|
RtlEnterCriticalSection(&ProcessData->HandleTableLock);
|
||||||
|
|
||||||
Status = ConioConsoleFromProcessData(ProcessData, &Console);
|
Status = ConioConsoleFromProcessData(ProcessData, &Console);
|
||||||
if (! NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Buff = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
|
Buff = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
|
||||||
|
|
||||||
if (Buff != NULL)
|
if (Buff != NULL)
|
||||||
{
|
{
|
||||||
if (Console->ActiveBuffer)
|
if (Console->ActiveBuffer)
|
||||||
|
@ -1298,7 +1299,9 @@ CSR_API(SrvCreateConsoleScreenBuffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
ConioUnlockConsole(Console);
|
ConioUnlockConsole(Console);
|
||||||
|
|
||||||
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
|
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue