From f79be84c4a2fe0256f0eb36f627d51e9bb7ab99e Mon Sep 17 00:00:00 2001 From: kichik Date: Wed, 11 May 2005 16:50:49 +0000 Subject: [PATCH] fixed string skip in ReadVarLenArr git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4022 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/DialogTemplate.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/DialogTemplate.cpp b/Source/DialogTemplate.cpp index 5124ac72..af82f785 100644 --- a/Source/DialogTemplate.cpp +++ b/Source/DialogTemplate.cpp @@ -37,7 +37,7 @@ #define ALIGN(dwToAlign, dwAlignOn) dwToAlign = (dwToAlign%dwAlignOn == 0) ? dwToAlign : dwToAlign - (dwToAlign%dwAlignOn) + dwAlignOn // Reads a variany length array from seeker into readInto and advances seeker -void ReadVarLenArr(BYTE* &seeker, char* &readInto, unsigned int uCodePage) { +void ReadVarLenArr(LPBYTE &seeker, char* &readInto, unsigned int uCodePage) { WORD* arr = (WORD*)seeker; switch (arr[0]) { case 0x0000: @@ -64,7 +64,10 @@ void ReadVarLenArr(BYTE* &seeker, char* &readInto, unsigned int uCodePage) { { throw runtime_error("ReadVarLenArr - Unicode conversion failed."); } - while (*(WCHAR*)seeker++); + + PWCHAR wseeker = PWCHAR(seeker); + while (*wseeker++); + seeker = LPBYTE(wseeker); } break; }