partial fix for bug #1470826 - unaligned memory access

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4713 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2006-07-30 11:52:20 +00:00
parent aa9edc8427
commit e530408b95

View file

@ -464,7 +464,8 @@ int CEXEBuild::preprocess_string(char *out, const char *in, WORD codepage/*=CP_A
// So the line below must be commented !??
//m_UserVarNames.inc_reference(idxUserVar);
*out++ = (unsigned int) NS_VAR_CODE; // Named user variable;
*(WORD*)out = FIX_ENDIAN_INT16(CODE_SHORT(idxUserVar));
WORD w = FIX_ENDIAN_INT16(CODE_SHORT(idxUserVar));
memcpy(out, &w, sizeof(WORD));
out += sizeof(WORD);
p += pUserVarName-p;
bProceced = true;
@ -508,7 +509,8 @@ int CEXEBuild::preprocess_string(char *out, const char *in, WORD codepage/*=CP_A
if (idx < 0)
{
*out++ = (unsigned int)NS_LANG_CODE; // Next word is lang-string Identifier
*(WORD*)out = FIX_ENDIAN_INT16(CODE_SHORT(-idx-1));
WORD w = FIX_ENDIAN_INT16(CODE_SHORT(-idx-1));
memcpy(out, &w, sizeof(WORD));
out += sizeof(WORD);
p += strlen(cp) + 2;
bProceced = true;