From e530408b9516f269adca747d0135b5b96981dc66 Mon Sep 17 00:00:00 2001 From: kichik Date: Sun, 30 Jul 2006 11:52:20 +0000 Subject: [PATCH] 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 --- Source/build.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/build.cpp b/Source/build.cpp index c4ebb416..ffa716e7 100644 --- a/Source/build.cpp +++ b/Source/build.cpp @@ -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;