From 912a68b6a5f13ebc4dc8a544d7c8de233986e129 Mon Sep 17 00:00:00 2001 From: Jason Hood Date: Sat, 13 Nov 2010 21:55:07 +1000 Subject: [PATCH] Return bytes not chars for WriteFileA --- ANSI.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ANSI.c b/ANSI.c index bb58a55..beb3a6f 100644 --- a/ANSI.c +++ b/ANSI.c @@ -1154,11 +1154,18 @@ WINAPI MyWriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, DWORD Mode; if (GetConsoleMode( hFile, &Mode ) && (Mode & ENABLE_PROCESSED_OUTPUT)) { + TCHAR name[MAX_PATH]; + DWORD len; + BOOL rc; DEBUGSTR( TEXT("\\WriteFile: %lu \"%.*hs\""), nNumberOfBytesToWrite, nNumberOfBytesToWrite, lpBuffer ); - return MyWriteConsoleA( hFile, lpBuffer, - nNumberOfBytesToWrite, - lpNumberOfBytesWritten, - lpOverlapped ); + rc = MyWriteConsoleA( hFile, lpBuffer, + nNumberOfBytesToWrite, + lpNumberOfBytesWritten, + lpOverlapped ); + len = GetModuleFileName( NULL, name, lenof(name) ); + if (len >= 8 && lstrcmpi( name + len - 8, TEXT("ruby.exe") ) == 0) + *lpNumberOfBytesWritten = nNumberOfBytesToWrite; + return rc; } else // here, WriteFile is the old function (this module is not hooked) {