diff -ruNp nsis-2.28-src/SCons/Config/hpc++ nsis-2.28-src.hpux/SCons/Config/hpc++ --- nsis-2.28-src/SCons/Config/hpc++ 2007-06-20 16:05:21.000000000 -0400 +++ nsis-2.28-src.hpux/SCons/Config/hpc++ 2007-06-20 19:15:48.000000000 -0400 @@ -29,9 +29,12 @@ makensis_env.Append(CFLAGS = '-Ae') ### required to build makensis +makensis_env.Append(LINKFLAGS = '-AA') makensis_env.Append(LINKFLAGS = '+DD32') makensis_env.Append(LINKFLAGS = '-mt') +makensis_env.Append(CCFLAGS = '-AA') +makensis_env.Append(CCFLAGS = '+W829') makensis_env.Append(CCFLAGS = '+DD32') makensis_env.Append(CCFLAGS = '-mt') diff -ruNp nsis-2.28-src/SConstruct nsis-2.28-src.hpux/SConstruct --- nsis-2.28-src/SConstruct 2007-06-20 16:05:21.000000000 -0400 +++ nsis-2.28-src.hpux/SConstruct 2007-06-13 10:13:26.000000000 -0400 @@ -344,10 +344,10 @@ envs = [] if 'msvc' in tools or 'mstoolkit' in tools: envs = SConscript('SCons/Config/ms') -elif 'gcc' in tools: - envs = SConscript('SCons/Config/gnu') elif 'hpc++' in tools: envs = SConscript('SCons/Config/hpc++') +elif 'gcc' in tools: + envs = SConscript('SCons/Config/gnu') else: envs = SConscript('SCons/Config/default') diff -ruNp nsis-2.28-src/Source/ResourceEditor.cpp nsis-2.28-src.hpux/Source/ResourceEditor.cpp --- nsis-2.28-src/Source/ResourceEditor.cpp 2007-06-20 16:05:21.000000000 -0400 +++ nsis-2.28-src.hpux/Source/ResourceEditor.cpp 2007-06-13 10:28:58.000000000 -0400 @@ -545,16 +545,16 @@ CResourceDirectory* CResourceEditor::Sca for (int i = 0; i < entries; i++) { MY_IMAGE_RESOURCE_DIRECTORY_ENTRY rd = rdToScan->Entries[i]; - rd.OffsetToData = ConvertEndianness(rd.OffsetToData); - rd.Name = ConvertEndianness(rd.Name); + rd._b.OffsetToData = ConvertEndianness(rd._b.OffsetToData); + rd._a.Name = ConvertEndianness(rd._a.Name); // If this entry points to data entry get a pointer to it - if (!rd.DirectoryOffset.DataIsDirectory) - rde = PIMAGE_RESOURCE_DATA_ENTRY(rd.OffsetToData + (BYTE*)rdRoot); + if (!rd._b.DirectoryOffset.DataIsDirectory) + rde = PIMAGE_RESOURCE_DATA_ENTRY(rd._b.OffsetToData + (BYTE*)rdRoot); // If this entry has a name, translate it from Unicode - if (rd.NameString.NameIsString) { - PIMAGE_RESOURCE_DIR_STRING_U rds = PIMAGE_RESOURCE_DIR_STRING_U(rd.NameString.NameOffset + (char*)rdRoot); + if (rd._a.NameString.NameIsString) { + PIMAGE_RESOURCE_DIR_STRING_U rds = PIMAGE_RESOURCE_DIR_STRING_U(rd._a.NameString.NameOffset + (char*)rdRoot); size_t nameSize = ConvertEndianness(rds->Length); szName = new WCHAR[nameSize+1]; @@ -563,15 +563,15 @@ CResourceDirectory* CResourceEditor::Sca } // Else, set the name to this entry's id else - szName = MAKEINTRESOURCEW(ConvertEndianness(rdToScan->Entries[i].Id)); + szName = MAKEINTRESOURCEW(ConvertEndianness(rdToScan->Entries[i]._a.Id)); - if (rd.DirectoryOffset.DataIsDirectory) + if (rd._b.DirectoryOffset.DataIsDirectory) rdc->AddEntry( new CResourceDirectoryEntry( szName, ScanDirectory( rdRoot, - PRESOURCE_DIRECTORY(rd.DirectoryOffset.OffsetToDirectory + (BYTE*)rdRoot) + PRESOURCE_DIRECTORY(rd._b.DirectoryOffset.OffsetToDirectory + (BYTE*)rdRoot) ) ) ); @@ -630,10 +630,10 @@ void CResourceEditor::WriteRsrcSec(BYTE* MY_IMAGE_RESOURCE_DIRECTORY_ENTRY rDirE; ZeroMemory(&rDirE, sizeof(rDirE)); - rDirE.DirectoryOffset.DataIsDirectory = crd->GetEntry(i)->IsDataDirectory(); - rDirE.Id = crd->GetEntry(i)->HasName() ? 0 : crd->GetEntry(i)->GetId(); - rDirE.Id = ConvertEndianness(rDirE.Id); - rDirE.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0; + rDirE._b.DirectoryOffset.DataIsDirectory = crd->GetEntry(i)->IsDataDirectory(); + rDirE._a.Id = crd->GetEntry(i)->HasName() ? 0 : crd->GetEntry(i)->GetId(); + rDirE._a.Id = ConvertEndianness(rDirE._a.Id); + rDirE._a.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0; CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY)); crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker); @@ -664,7 +664,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* while (!qStrings.empty()) { CResourceDirectoryEntry* cRDirE = qStrings.front(); - PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec)); + PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->_a.NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec)); WCHAR* szName = cRDirE->GetName(); WORD iLen = winchar_strlen(szName) + 1; @@ -703,13 +703,13 @@ void CResourceEditor::SetOffsets(CResour for (int i = 0; i < resDir->CountEntries(); i++) { PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY rde = PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(resDir->GetEntry(i)->m_dwWrittenAt); if (resDir->GetEntry(i)->IsDataDirectory()) { - rde->DirectoryOffset.DataIsDirectory = 1; - rde->DirectoryOffset.OffsetToDirectory = resDir->GetEntry(i)->GetSubDirectory()->m_dwWrittenAt - newResDirAt; - rde->OffsetToData = ConvertEndianness(rde->OffsetToData); + rde->_b.DirectoryOffset.DataIsDirectory = 1; + rde->_b.DirectoryOffset.OffsetToDirectory = resDir->GetEntry(i)->GetSubDirectory()->m_dwWrittenAt - newResDirAt; + rde->_b.OffsetToData = ConvertEndianness(rde->_b.OffsetToData); SetOffsets(resDir->GetEntry(i)->GetSubDirectory(), newResDirAt); } else { - rde->OffsetToData = ConvertEndianness(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt); + rde->_b.OffsetToData = ConvertEndianness(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt); } } } diff -ruNp nsis-2.28-src/Source/ResourceEditor.h nsis-2.28-src.hpux/Source/ResourceEditor.h --- nsis-2.28-src/Source/ResourceEditor.h 2007-01-25 08:02:49.000000000 -0500 +++ nsis-2.28-src.hpux/Source/ResourceEditor.h 2007-06-13 10:16:47.000000000 -0400 @@ -72,7 +72,7 @@ typedef struct _MY_IMAGE_RESOURCE_DIRECT } NameString; DWORD Name; WORD Id; - }; + } _a; union { DWORD OffsetToData; struct { @@ -84,7 +84,7 @@ typedef struct _MY_IMAGE_RESOURCE_DIRECT DWORD OffsetToDirectory:31; #endif } DirectoryOffset; - }; + } _b; } MY_IMAGE_RESOURCE_DIRECTORY_ENTRY,*PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY; #pragma pack() diff -ruNp nsis-2.28-src/Source/util.cpp nsis-2.28-src.hpux/Source/util.cpp --- nsis-2.28-src/Source/util.cpp 2007-04-24 10:24:18.000000000 -0400 +++ nsis-2.28-src.hpux/Source/util.cpp 2007-06-20 15:15:42.000000000 -0400 @@ -307,7 +307,7 @@ int find_in_dir(PRESOURCE_DIRECTORY rd, WORD l = i + FIX_ENDIAN_INT16(rd->Header.NumberOfIdEntries); for (; i < l; i++) { - if (FIX_ENDIAN_INT16(rd->Entries[i].Id) == id) { + if (FIX_ENDIAN_INT16(rd->Entries[i]._a.Id) == id) { return i; } } @@ -326,10 +326,10 @@ int generate_unicons_offsets(unsigned ch int idx = find_in_dir(rdRoot, (WORD) (long) RT_ICON); MY_ASSERT(idx < 0, "no icons found"); MY_IMAGE_RESOURCE_DIRECTORY_ENTRY rdEntry = rdRoot->Entries[idx]; - FIX_ENDIAN_INT32_INPLACE(rdEntry.OffsetToData); - MY_ASSERT(!rdEntry.DirectoryOffset.DataIsDirectory, "bad resource directory"); + FIX_ENDIAN_INT32_INPLACE(rdEntry._b.OffsetToData); + MY_ASSERT(!rdEntry._b.DirectoryOffset.DataIsDirectory, "bad resource directory"); - PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot)); + PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry._b.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot)); MY_ASSERT((size_t)rdIcons - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer"); @@ -339,19 +339,19 @@ int generate_unicons_offsets(unsigned ch for (WORD i = 0; i < wNumberOfEntries; i++) { // Icons dir can't have named entries MY_IMAGE_RESOURCE_DIRECTORY_ENTRY icoEntry = rdIcons->Entries[i]; - FIX_ENDIAN_INT32_INPLACE(icoEntry.OffsetToData); + FIX_ENDIAN_INT32_INPLACE(icoEntry._b.OffsetToData); - MY_ASSERT(!icoEntry.DirectoryOffset.DataIsDirectory, "bad resource directory"); - PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot)); + MY_ASSERT(!icoEntry._b.DirectoryOffset.DataIsDirectory, "bad resource directory"); + PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry._b.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot)); MY_ASSERT((size_t)rd - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer"); MY_IMAGE_RESOURCE_DIRECTORY_ENTRY datEntry = rd->Entries[0]; - FIX_ENDIAN_INT32_INPLACE(datEntry.OffsetToData); + FIX_ENDIAN_INT32_INPLACE(datEntry._b.OffsetToData); - MY_ASSERT(datEntry.DirectoryOffset.DataIsDirectory, "bad resource directory"); + MY_ASSERT(datEntry._b.DirectoryOffset.DataIsDirectory, "bad resource directory"); - PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + DWORD(rdRoot)); + PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry._b.OffsetToData + DWORD(rdRoot)); MY_ASSERT((size_t)rde - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer"); @@ -574,18 +589,18 @@ FILE *my_fopen(const char *path, const c } #endif//!_WIN32 -void *operator new(size_t size) { +void *operator new(size_t size) __THROWSPEC_X(__bad_alloc) { void *p = malloc(size); if (!p) throw bad_alloc(); return p; } -void operator delete(void *p) { +void operator delete(void *p) __THROWSPEC_NULL { if (p) free(p); } -void operator delete [](void *p) { +void operator delete [](void *p) __THROWSPEC_NULL { if (p) free(p); }