fixed string skip in ReadVarLenArr

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4022 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-05-11 16:50:49 +00:00
parent 8bc1169798
commit f79be84c4a

View file

@ -37,7 +37,7 @@
#define ALIGN(dwToAlign, dwAlignOn) dwToAlign = (dwToAlign%dwAlignOn == 0) ? dwToAlign : dwToAlign - (dwToAlign%dwAlignOn) + dwAlignOn #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 // 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; WORD* arr = (WORD*)seeker;
switch (arr[0]) { switch (arr[0]) {
case 0x0000: case 0x0000:
@ -64,7 +64,10 @@ void ReadVarLenArr(BYTE* &seeker, char* &readInto, unsigned int uCodePage) {
{ {
throw runtime_error("ReadVarLenArr - Unicode conversion failed."); throw runtime_error("ReadVarLenArr - Unicode conversion failed.");
} }
while (*(WCHAR*)seeker++);
PWCHAR wseeker = PWCHAR(seeker);
while (*wseeker++);
seeker = LPBYTE(wseeker);
} }
break; break;
} }