From 75a65af4d6c78f09c54652d5ecb605518b2cd5e4 Mon Sep 17 00:00:00 2001 From: Jason Hood Date: Wed, 4 Sep 2013 19:37:55 +1000 Subject: [PATCH] Fix finding 32-bit LLW from 64-bit; fix \e[K; release v1.65. --- ANSI.c | 5 ++++- ansicon.c | 2 +- injdll32.c | 10 ++++------ readme.txt | 12 +++++++++--- version.h | 10 +++++----- 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/ANSI.c b/ANSI.c index 9b4be69..78e90e8 100644 --- a/ANSI.c +++ b/ANSI.c @@ -104,6 +104,9 @@ v1.64, 2 August, 2013: better method of determining a console handle (see IsConsoleHandle). + + v1.65, 28 August, 2013: + fix \e[K (was using window, not buffer). */ #include "ansicon.h" @@ -547,7 +550,7 @@ void InterpretEscSeq( void ) switch (es_argv[0]) { case 0: // ESC[0K Clear to end of line - len = Info.srWindow.Right - Info.dwCursorPosition.X + 1; + len = Info.dwSize.X - Info.dwCursorPosition.X + 1; FillConsoleOutputCharacter( hConOut, ' ', len, Info.dwCursorPosition, &NumberOfCharsWritten ); diff --git a/ansicon.c b/ansicon.c index c217c2b..59321c6 100644 --- a/ansicon.c +++ b/ansicon.c @@ -78,7 +78,7 @@ don't write the reset sequence if output is redirected. */ -#define PDATE L"2 August, 2013" +#define PDATE L"4 September, 2013" #include "ansicon.h" #include "version.h" diff --git a/injdll32.c b/injdll32.c index 9b0b598..82978e6 100644 --- a/injdll32.c +++ b/injdll32.c @@ -32,10 +32,11 @@ TWow64SetThreadContext Wow64SetThreadContext; #define GetThreadContext Wow64GetThreadContext #define SetThreadContext Wow64SetThreadContext -#define MakeVA( cast, offset ) (cast)((DWORD_PTR)base + (DWORD)(offset)) +#define MakeVA( cast, offset ) (cast)((DWORD_PTR)pDosHeader + (DWORD)(offset)) extern DWORD LLW32; LPVOID base; +static PIMAGE_DOS_HEADER pDosHeader; int export_cmp( const void* a, const void* b ) { @@ -54,7 +55,6 @@ BOOL get_LLW32( void ) HMODULE kernel32; TCHAR buf[MAX_PATH]; UINT len; - PIMAGE_DOS_HEADER pDosHeader; PIMAGE_NT_HEADERS32 pNTHeader; PIMAGE_EXPORT_DIRECTORY pExportDir; PDWORD fun_table, name_table; @@ -63,7 +63,7 @@ BOOL get_LLW32( void ) len = GetSystemWow64Directory( buf, MAX_PATH ); wcscpy( buf + len, L"\\kernel32.dll" ); - // MinGW-w64 has a typo, calling it LINRARY. + // MinGW-w64 had a typo, calling it LINRARY. kernel32 = LoadLibraryEx( buf, NULL, 0x20/*LOAD_LIBRARY_AS_IMAGE_RESOURCE*/ ); if (kernel32 == NULL) { @@ -71,9 +71,7 @@ BOOL get_LLW32( void ) return FALSE; } // The handle uses low bits as flags, so strip 'em off. - base = (LPVOID)((DWORD_PTR)kernel32 & ~0xFFFF); - - pDosHeader = (PIMAGE_DOS_HEADER)base; + pDosHeader = (PIMAGE_DOS_HEADER)((DWORD_PTR)kernel32 & ~0xFFFF); pNTHeader = MakeVA( PIMAGE_NT_HEADERS32, pDosHeader->e_lfanew ); pExportDir = MakeVA( PIMAGE_EXPORT_DIRECTORY, pNTHeader->OptionalHeader. diff --git a/readme.txt b/readme.txt index 5f683f9..4882b3b 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Copyright 2005-2013 Jason Hood - Version 1.64. Freeware + Version 1.65. Freeware Description @@ -270,6 +270,10 @@ Version History Legend: + added, - bug-fixed, * changed. + 1.65 - 4 September, 2013: + - fix finding 32-bit LoadLibraryW address from 64-bit; + - fix \e[K (was using window, not buffer). + 1.64 - 2 August, 2013: - improved detection of console output. @@ -425,6 +429,8 @@ Acknowledgments Leigh Hebblethwaite for documentation tweaks. + Vincent Fatica for pointing out \e[K was not right. + Contact ======= @@ -452,5 +458,5 @@ Distribution in LICENSE.txt. -=========================== -Jason Hood, 2 August, 2013. +============================== +Jason Hood, 4 September, 2013. diff --git a/version.h b/version.h index cdc549e..32ce093 100644 --- a/version.h +++ b/version.h @@ -2,11 +2,11 @@ version.h - Version defines. */ -#define PVERS L"1.64" // wide string -#define PVERSA "1.64" // ANSI string (windres 2.16.91 didn't like L) -#define PVERE L"164" // wide environment string -#define PVEREA "164" // ANSI environment string -#define PVERB 1,6,4,0 // binary (resource) +#define PVERS L"1.65" // wide string +#define PVERSA "1.65" // ANSI string (windres 2.16.91 didn't like L) +#define PVERE L"165" // wide environment string +#define PVEREA "165" // ANSI environment string +#define PVERB 1,6,5,0 // binary (resource) #ifdef _WIN64 # define BITS L"64"