diff --git a/dll/win32/kernel32/client/console/readwrite.c b/dll/win32/kernel32/client/console/readwrite.c index 87f14aa0a2f..b6d80d6a881 100644 --- a/dll/win32/kernel32/client/console/readwrite.c +++ b/dll/win32/kernel32/client/console/readwrite.c @@ -351,33 +351,26 @@ IntReadConsoleOutputCode(HANDLE hConsoleOutput, ReadOutputCodeRequest->CodeType = CodeType; ReadOutputCodeRequest->ReadCoord = dwReadCoord; - // while (nLength > 0) + ReadOutputCodeRequest->NumCodesToRead = nLength; + + Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage, + CaptureBuffer, + CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepReadConsoleOutputString), + sizeof(CONSOLE_READOUTPUTCODE)); + if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status)) { - ReadOutputCodeRequest->NumCodesToRead = nLength; - // SizeBytes = ReadOutputCodeRequest->NumCodesToRead * CodeSize; - - Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage, - CaptureBuffer, - CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepReadConsoleOutputString), - sizeof(CONSOLE_READOUTPUTCODE)); - if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status)) - { - BaseSetLastNTError(Status); - CsrFreeCaptureBuffer(CaptureBuffer); - return FALSE; - } - - BytesRead = ReadOutputCodeRequest->CodesRead * CodeSize; - memcpy(pCode, ReadOutputCodeRequest->pCode.pCode, BytesRead); - // pCode = (PVOID)((ULONG_PTR)pCode + /*(ULONG_PTR)*/BytesRead); - // nLength -= ReadOutputCodeRequest->CodesRead; - // CodesRead += ReadOutputCodeRequest->CodesRead; - - ReadOutputCodeRequest->ReadCoord = ReadOutputCodeRequest->EndCoord; + BaseSetLastNTError(Status); + CsrFreeCaptureBuffer(CaptureBuffer); + return FALSE; } + BytesRead = ReadOutputCodeRequest->CodesRead * CodeSize; + memcpy(pCode, ReadOutputCodeRequest->pCode.pCode, BytesRead); + + ReadOutputCodeRequest->ReadCoord = ReadOutputCodeRequest->EndCoord; + if (lpNumberOfCodesRead != NULL) - *lpNumberOfCodesRead = /*CodesRead;*/ ReadOutputCodeRequest->CodesRead; + *lpNumberOfCodesRead = ReadOutputCodeRequest->CodesRead; CsrFreeCaptureBuffer(CaptureBuffer); diff --git a/win32ss/user/consrv/conoutput.c b/win32ss/user/consrv/conoutput.c index 5e237ea0dda..89634cdf582 100644 --- a/win32ss/user/consrv/conoutput.c +++ b/win32ss/user/consrv/conoutput.c @@ -862,20 +862,20 @@ CSR_API(SrvReadConsoleOutputString) } } - switch (CodeType) - { - case CODE_UNICODE: - *(PWCHAR)ReadBuffer = 0; - break; + // switch (CodeType) + // { + // case CODE_UNICODE: + // *(PWCHAR)ReadBuffer = 0; + // break; - case CODE_ASCII: - *(PCHAR)ReadBuffer = 0; - break; + // case CODE_ASCII: + // *(PCHAR)ReadBuffer = 0; + // break; - case CODE_ATTRIBUTE: - *(PWORD)ReadBuffer = 0; - break; - } + // case CODE_ATTRIBUTE: + // *(PWORD)ReadBuffer = 0; + // break; + // } ReadOutputCodeRequest->EndCoord.X = Xpos; ReadOutputCodeRequest->EndCoord.Y = (Ypos - Buff->VirtualY + Buff->MaxY) % Buff->MaxY;