Merge pull request #1592 from LuaAndC/nsis-3.01

nsis: update to 3.01
This commit is contained in:
Boris Nagaev 2016-12-15 20:05:05 -08:00 committed by GitHub
commit 4cc48cfb7b
2 changed files with 13 additions and 929 deletions

View File

@ -14,950 +14,34 @@ diff --git a/SCons/Tools/crossmingw.py b/SCons/Tools/crossmingw.py
index 1111111..2222222 100755
--- a/SCons/Tools/crossmingw.py
+++ b/SCons/Tools/crossmingw.py
@@ -61,6 +61,9 @@ prefixes = SCons.Util.Split("""
@@ -65,6 +65,9 @@ prefixes = SCons.Util.Split("""
""")
def find(env):
+ if env.has_key('MINGW_CROSS_PREFIX'):
+ return env['MINGW_CROSS_PREFIX']
+
for prefix in prefixes:
# First search in the SCons path and then the OS path:
if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'):
# Explicitly specified toolchain to build Windows executables
# takes predominance.
prefix = SCons.Script.ARGUMENTS.get('XGCC_W32_PREFIX', None)
diff --git a/SConstruct b/SConstruct
index 1111111..2222222 100755
--- a/SConstruct
+++ b/SConstruct
@@ -59,6 +59,7 @@ doc = [
@@ -67,6 +67,7 @@ doctypes = [
path = ARGUMENTS.get('PATH', '')
toolset = ARGUMENTS.get('TOOLSET', '')
arch = ARGUMENTS.get('TARGET_ARCH', 'x86')
+mingw_cross_prefix = ARGUMENTS.get('MINGW_CROSS_PREFIX', '')
if toolset and path:
defenv = Environment(ENV = {'PATH' : path}, TOOLS = toolset.split(',') + ['zip'])
@@ -69,6 +70,8 @@ else:
defenv = Environment(TOOLS = toolset.split(',') + ['zip'])
defenv = Environment(TARGET_ARCH = arch, ENV = {'PATH' : path}, TOOLS = toolset.split(',') + ['zip'])
@@ -77,6 +78,8 @@ else:
defenv = Environment(TARGET_ARCH = arch, TOOLS = toolset.split(',') + ['zip'])
if not toolset and not path:
defenv = Environment()
defenv = Environment(TARGET_ARCH = arch)
+if mingw_cross_prefix:
+ defenv['MINGW_CROSS_PREFIX'] = mingw_cross_prefix
Export('defenv')
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: freeman <free.man.uu@gmail.com>
Date: Sun, 12 Aug 2012 12:36:39 +0200
Subject: [PATCH] add missing header
diff --git a/Source/util.h b/Source/util.h
index 1111111..2222222 100755
--- a/Source/util.h
+++ b/Source/util.h
@@ -25,6 +25,7 @@
#ifndef _WIN32
# include <iconv.h>
# include <stdio.h>
+# include <unistd.h>
#endif
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Boris Pek <tehnick-8@yandex.ru>
Date: Mon, 16 May 2016 14:26:59 +0300
Subject: [PATCH] Enable native 64-bit build
Taken from:
http://anonscm.debian.org/gitweb/?p=collab-maint/nsis.git;a=blob;f=debian/patches/makensis_native_64bit.patch;h=2256a0e193db894dd99507ac0de66f8ae060b46b;hb=HEAD
diff --git a/SCons/Config/gnu b/SCons/Config/gnu
index 1111111..2222222 100755
--- a/SCons/Config/gnu
+++ b/SCons/Config/gnu
@@ -95,8 +95,6 @@ makensis_env.Append(CXXFLAGS = ['-Wno-non-virtual-dtor']) # ignore virtual dtor
makensis_env.Append(CXXFLAGS = ['-Wall']) # all warnings
conf = FlagsConfigure(makensis_env)
-conf.CheckCompileFlag('-m32') #
-conf.CheckLinkFlag('-m32') #
conf.CheckLinkFlag('$MAP_FLAG') # generate map file
if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
TestStrip(conf) # strip
@@ -149,8 +147,6 @@ conf.Finish()
### cross-platform util environment adjustments
conf = FlagsConfigure(cp_util_env)
-conf.CheckCompileFlag('-m32')
-conf.CheckLinkFlag('-m32')
if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
TestStrip(conf) # strip
conf.Finish()
@@ -160,8 +156,6 @@ conf.Finish()
test_env = defenv.Clone()
test_env.Append(CPPPATH = ['#$BUILD_CONFIG'])
conf = FlagsConfigure(test_env)
-conf.CheckCompileFlag('-m32')
-conf.CheckLinkFlag('-m32')
conf.Finish()
### weird GCC requirements
diff --git a/Source/DialogTemplate.cpp b/Source/DialogTemplate.cpp
index 1111111..2222222 100755
--- a/Source/DialogTemplate.cpp
+++ b/Source/DialogTemplate.cpp
@@ -74,7 +74,7 @@ void ReadVarLenArr(LPBYTE &seeker, WCHAR* &readInto, unsigned int uCodePage) {
if (IS_INTRESOURCE(x)) { \
*(WORD*)seeker = 0xFFFF; \
seeker += sizeof(WORD); \
- *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
+ *(WORD*)seeker = ConvertEndianness(WORD((ULONG_PTR)(x))); \
seeker += sizeof(WORD); \
} \
else { \
@@ -450,7 +450,7 @@ void CDialogTemplate::ConvertToRTL() {
szClass = winchar_toansi(m_vItems[i]->szClass);
// Button
- if (long(m_vItems[i]->szClass) == 0x80) {
+ if ((ULONG_PTR)(m_vItems[i]->szClass) == 0x80) {
m_vItems[i]->dwStyle ^= BS_LEFTTEXT;
m_vItems[i]->dwStyle ^= BS_RIGHT;
m_vItems[i]->dwStyle ^= BS_LEFT;
@@ -464,13 +464,13 @@ void CDialogTemplate::ConvertToRTL() {
}
}
// Edit
- else if (long(m_vItems[i]->szClass) == 0x81) {
+ else if ((ULONG_PTR)(m_vItems[i]->szClass) == 0x81) {
if ((m_vItems[i]->dwStyle & ES_CENTER) == 0) {
m_vItems[i]->dwStyle ^= ES_RIGHT;
}
}
// Static
- else if (long(m_vItems[i]->szClass) == 0x82) {
+ else if ((ULONG_PTR)(m_vItems[i]->szClass) == 0x82) {
if ((m_vItems[i]->dwStyle & SS_TYPEMASK) == SS_LEFT || (m_vItems[i]->dwStyle & SS_TYPEMASK) == SS_LEFTNOWORDWRAP)
{
m_vItems[i]->dwStyle &= ~SS_TYPEMASK;
@@ -577,7 +577,7 @@ BYTE* CDialogTemplate::Save(DWORD& dwSize) {
// Write all of the items
for (unsigned int i = 0; i < m_vItems.size(); i++) {
// DLGITEMTEMPLATE[EX]s must be aligned on DWORD boundary
- if (DWORD(seeker - pbDlg) % sizeof(DWORD))
+ if ((seeker - pbDlg) % sizeof(DWORD))
seeker += sizeof(WORD);
if (m_bExtended) {
@@ -628,7 +628,7 @@ BYTE* CDialogTemplate::Save(DWORD& dwSize) {
}
}
- assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
+ assert((DWORD)(seeker - pbDlg) == dwSize);
// DONE!
return pbDlg;
diff --git a/Source/Platform.h b/Source/Platform.h
index 1111111..2222222 100755
--- a/Source/Platform.h
+++ b/Source/Platform.h
@@ -53,6 +53,7 @@ typedef unsigned char UCHAR;
typedef const char *LPCCH, *PCSTR, *LPCSTR;
typedef unsigned short WCHAR, OLECHAR, *PWCHAR, *LPWCH, *PWCH, *NWPSTR, *LPWSTR, *PWSTR, *BSTR;
typedef const unsigned short *LPCWCH, *PCWCH, *LPCWSTR, *PCWSTR, *LPCOLESTR;
+typedef int INT_PTR;
typedef unsigned int UINT_PTR;
// basic stuff
typedef void * HANDLE;
@@ -60,8 +61,8 @@ typedef HANDLE HWND;
typedef HANDLE HMODULE;
typedef unsigned long HKEY;
// some gdi
-typedef unsigned long COLORREF;
-typedef unsigned long HBRUSH;
+typedef DWORD COLORREF;
+typedef UINT32 HBRUSH;
// bool
# define FALSE 0
# define TRUE 1
@@ -166,7 +167,7 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
# define MAKEINTRESOURCE MAKEINTRESOURCEA
# endif
# ifndef IMAGE_FIRST_SECTION
-# define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
+# define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (ULONG_PTR) h + \
FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) + \
FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
# endif
@@ -174,7 +175,7 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
# define RGB(r,g,b) ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
# endif
# ifndef MAKELONG
-# define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
+# define MAKELONG(a,b) ((DWORD)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
# endif
#endif
#ifndef IS_INTRESOURCE
@@ -197,8 +198,10 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
# define FOF_NOERRORUI 0x0400
#endif
-#ifndef ULONG_PTR
-# define ULONG_PTR DWORD
+// mingw32 and w64-mingw32 do not define ULONG_PTR
+// but rather declare ULONG_PTR via typedef (see basetsd.h)
+#if !defined(__MINGW32__) && !defined(ULONG_PTR)
+# define ULONG_PTR unsigned long
#endif
#ifndef IDC_HAND
@@ -238,7 +241,7 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
# undef INVALID_FILE_ATTRIBUTES
#endif
#ifndef INVALID_FILE_ATTRIBUTES
-# define INVALID_FILE_ATTRIBUTES ((unsigned long) -1)
+# define INVALID_FILE_ATTRIBUTES ((DWORD) -1)
#endif
// shell folders
diff --git a/Source/Plugins.cpp b/Source/Plugins.cpp
index 1111111..2222222 100755
--- a/Source/Plugins.cpp
+++ b/Source/Plugins.cpp
@@ -29,7 +29,7 @@
#include "dirreader.h"
#ifdef _WIN32
-# include <WinNT.h>
+# include <winnt.h>
#else
# include <sys/stat.h>
#endif
@@ -136,8 +136,8 @@ void Plugins::GetExports(const string &pathToDll, bool displayInfo)
DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] + prd + ExportDirVA - va);
DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
- unsigned long *names = (unsigned long*)((unsigned long) exports + (char *) na - ExportDirVA);
- for (unsigned long j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
+ LPDWORD names = (LPDWORD)((ULONG_PTR)exports + na - ExportDirVA);
+ for (DWORD j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
{
const string name = string((char*)exports + FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
const string signature = dllName + "::" + name;
diff --git a/Source/ResourceEditor.cpp b/Source/ResourceEditor.cpp
index 1111111..2222222 100755
--- a/Source/ResourceEditor.cpp
+++ b/Source/ResourceEditor.cpp
@@ -27,20 +27,10 @@ using namespace std;
#define ALIGN(dwToAlign, dwAlignOn) dwToAlign = (dwToAlign%dwAlignOn == 0) ? dwToAlign : dwToAlign - (dwToAlign%dwAlignOn) + dwAlignOn
#define RALIGN(dwToAlign, dwAlignOn) ((dwToAlign%dwAlignOn == 0) ? dwToAlign : dwToAlign - (dwToAlign%dwAlignOn) + dwAlignOn)
-#ifndef _WIN32
-static inline ULONG ConvertEndianness(ULONG u) {
- return FIX_ENDIAN_INT32(u);
-}
-#endif
-
static inline DWORD ConvertEndianness(DWORD d) {
return FIX_ENDIAN_INT32(d);
}
-static inline LONG ConvertEndianness(LONG l) {
- return FIX_ENDIAN_INT32(l);
-}
-
static inline WORD ConvertEndianness(WORD w) {
return FIX_ENDIAN_INT16(w);
}
@@ -52,7 +42,7 @@ PIMAGE_NT_HEADERS CResourceEditor::GetNTHeaders(BYTE* pbPE) {
throw runtime_error("PE file contains invalid DOS header");
// Get NT headers
- PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(pbPE + ConvertEndianness(dosHeader->e_lfanew));
+ PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(pbPE + ConvertEndianness((DWORD)dosHeader->e_lfanew));
if (ntHeaders->Signature != IMAGE_NT_SIGNATURE)
throw runtime_error("PE file missing NT signature");
@@ -684,7 +674,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) {
rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
- crd->m_dwWrittenAt = DWORD(seeker);
+ crd->m_ulWrittenAt = (ULONG_PTR)(seeker);
seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
for (int i = 0; i < crd->CountEntries(); i++) {
@@ -705,7 +695,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) {
rDirE.UName.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0;
CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
- crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
+ crd->GetEntry(i)->m_ulWrittenAt = (ULONG_PTR)(seeker);
seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
}
qDirs.pop();
@@ -721,7 +711,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) {
rDataE.Size = ConvertEndianness(cRDataE->GetSize());
CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
- cRDataE->m_dwWrittenAt = DWORD(seeker);
+ cRDataE->m_ulWrittenAt = (ULONG_PTR)(seeker);
seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
qDataEntries.pop();
@@ -733,7 +723,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) {
while (!qStrings.empty()) {
CResourceDirectoryEntry* cRDirE = qStrings.front();
- PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
+ PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_ulWrittenAt)->UName.NameString.NameOffset = ConvertEndianness((DWORD) (seeker - pbRsrcSec));
WCHAR* szName = cRDirE->GetName();
WORD iLen = winchar_strlen(szName) + 1;
@@ -754,7 +744,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) {
while (!qDataEntries2.empty()) {
CResourceDataEntry* cRDataE = qDataEntries2.front();
CopyMemory(seeker, cRDataE->GetData(), cRDataE->GetSize());
- PIMAGE_RESOURCE_DATA_ENTRY(cRDataE->m_dwWrittenAt)->OffsetToData = ConvertEndianness(seeker - pbRsrcSec + m_dwResourceSectionVA);
+ PIMAGE_RESOURCE_DATA_ENTRY(cRDataE->m_ulWrittenAt)->OffsetToData = ConvertEndianness((DWORD)(seeker - pbRsrcSec) + m_dwResourceSectionVA);
seeker += RALIGN(cRDataE->GetSize(), 8);
@@ -764,21 +754,21 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) {
/*
* Set all of the directory entries offsets.
*/
- SetOffsets(m_cResDir, DWORD(pbRsrcSec));
+ SetOffsets(m_cResDir, (ULONG_PTR)(pbRsrcSec));
}
// Sets the offsets in directory entries
-void CResourceEditor::SetOffsets(CResourceDirectory* resDir, DWORD newResDirAt) {
+void CResourceEditor::SetOffsets(CResourceDirectory* resDir, ULONG_PTR newResDirAt) {
for (int i = 0; i < resDir->CountEntries(); i++) {
- PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY rde = PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(resDir->GetEntry(i)->m_dwWrittenAt);
+ PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY rde = PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(resDir->GetEntry(i)->m_ulWrittenAt);
if (resDir->GetEntry(i)->IsDataDirectory()) {
rde->UOffset.DirectoryOffset.DataIsDirectory = 1;
- rde->UOffset.DirectoryOffset.OffsetToDirectory = resDir->GetEntry(i)->GetSubDirectory()->m_dwWrittenAt - newResDirAt;
+ rde->UOffset.DirectoryOffset.OffsetToDirectory = resDir->GetEntry(i)->GetSubDirectory()->m_ulWrittenAt - newResDirAt;
rde->UOffset.OffsetToData = ConvertEndianness(rde->UOffset.OffsetToData);
SetOffsets(resDir->GetEntry(i)->GetSubDirectory(), newResDirAt);
}
else {
- rde->UOffset.OffsetToData = ConvertEndianness(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt);
+ rde->UOffset.OffsetToData = ConvertEndianness((DWORD)(resDir->GetEntry(i)->GetDataEntry()->m_ulWrittenAt - newResDirAt));
}
}
}
@@ -887,7 +877,7 @@ int CResourceDirectory::CountEntries() {
// Returns -1 if can not be found
int CResourceDirectory::Find(WCHAR* szName) {
if (IS_INTRESOURCE(szName))
- return Find((WORD) (DWORD) szName);
+ return Find((WORD) (ULONG_PTR) szName);
else
if (szName[0] == '#')
return Find(WORD(winchar_stoi(szName + 1)));
@@ -965,7 +955,7 @@ CResourceDirectoryEntry::CResourceDirectoryEntry(WCHAR* szName, CResourceDirecto
if (IS_INTRESOURCE(szName)) {
m_bHasName = false;
m_szName = 0;
- m_wId = (WORD) (DWORD) szName;
+ m_wId = (WORD) (ULONG_PTR) szName;
}
else {
m_bHasName = true;
@@ -979,7 +969,7 @@ CResourceDirectoryEntry::CResourceDirectoryEntry(WCHAR* szName, CResourceDataEnt
if (IS_INTRESOURCE(szName)) {
m_bHasName = false;
m_szName = 0;
- m_wId = (WORD) (DWORD) szName;
+ m_wId = (WORD) (ULONG_PTR) szName;
}
else {
m_bHasName = true;
diff --git a/Source/ResourceEditor.h b/Source/ResourceEditor.h
index 1111111..2222222 100755
--- a/Source/ResourceEditor.h
+++ b/Source/ResourceEditor.h
@@ -27,7 +27,7 @@
#include "Platform.h"
#ifdef _WIN32
-# include <WinNT.h>
+# include <winnt.h>
#else
// all definitions for non Win32 platforms were taken from MinGW's free Win32 library
# define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
@@ -156,7 +156,7 @@ private:
CResourceDirectory* ScanDirectory(PRESOURCE_DIRECTORY rdRoot, PRESOURCE_DIRECTORY rdToScan);
void WriteRsrcSec(BYTE* pbRsrcSec);
- void SetOffsets(CResourceDirectory* resDir, DWORD newResDirAt);
+ void SetOffsets(CResourceDirectory* resDir, ULONG_PTR newResDirAt);
DWORD AdjustVA(DWORD dwVirtualAddress, DWORD dwAdjustment);
DWORD AlignVA(DWORD dwVirtualAddress);
@@ -180,7 +180,7 @@ public:
void Destroy();
- DWORD m_dwWrittenAt;
+ ULONG_PTR m_ulWrittenAt;
private:
IMAGE_RESOURCE_DIRECTORY m_rdDir;
@@ -204,7 +204,7 @@ public:
CResourceDataEntry* GetDataEntry();
- DWORD m_dwWrittenAt;
+ ULONG_PTR m_ulWrittenAt;
private:
bool m_bHasName;
@@ -232,7 +232,7 @@ public:
DWORD GetCodePage();
DWORD GetOffset();
- DWORD m_dwWrittenAt;
+ ULONG_PTR m_ulWrittenAt;
private:
BYTE* m_pbData;
diff --git a/Source/ResourceVersionInfo.cpp b/Source/ResourceVersionInfo.cpp
index 1111111..2222222 100755
--- a/Source/ResourceVersionInfo.cpp
+++ b/Source/ResourceVersionInfo.cpp
@@ -146,7 +146,7 @@ int GetVersionHeader (LPSTR &p, WORD &wLength, WORD &wValueLength, WORD &wType)
p += sizeof(WORD);
szKey = (WCHAR*)p;
p += (winchar_strlen(szKey) + 1) * sizeof (WCHAR);
- while ( ((long)p % 4) != 0 )
+ while ( ((ULONG_PTR)p % 4) != 0 )
p++;
return p - baseP;
}
diff --git a/Source/fileform.cpp b/Source/fileform.cpp
index 1111111..2222222 100755
--- a/Source/fileform.cpp
+++ b/Source/fileform.cpp
@@ -149,7 +149,7 @@ void ctlcolors_writer::write(const ctlcolors *data)
m_sink->write_int(data->text);
m_sink->write_int(data->bkc);
m_sink->write_int(data->lbStyle);
- m_sink->write_int((int) data->bkb);
+ m_sink->write_int((INT_PTR) data->bkb);
m_sink->write_int(data->bkmode);
m_sink->write_int(data->flags);
}
diff --git a/Source/mmap.cpp b/Source/mmap.cpp
index 1111111..2222222 100755
--- a/Source/mmap.cpp
+++ b/Source/mmap.cpp
@@ -322,7 +322,7 @@ void MMapFile::release(void *pView, int size)
if (!pView)
return;
- unsigned int alignment = ((unsigned int)pView) % m_iAllocationGranularity;
+ unsigned int alignment = ((ULONG_PTR)pView) % m_iAllocationGranularity;
pView = (char *)pView - alignment;
size += alignment;
#ifdef _WIN32
diff --git a/Source/script.cpp b/Source/script.cpp
index 1111111..2222222 100755
--- a/Source/script.cpp
+++ b/Source/script.cpp
@@ -2129,7 +2129,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
int k=line.gettoken_enum(1,rootkeys[0]);
if (k == -1) k=line.gettoken_enum(1,rootkeys[1]);
if (k == -1) PRINTHELP()
- build_header.install_reg_rootkey=(int)rootkey_tab[k];
+ build_header.install_reg_rootkey=(INT_PTR)rootkey_tab[k];
if (!build_header.install_reg_rootkey) PRINTHELP() // SHCTX is invalid here
build_header.install_reg_key_ptr = add_string(line.gettoken_str(2),0);
if (line.gettoken_str(2)[0] == '\\')
@@ -5184,7 +5184,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
int k=line.gettoken_enum(2,rootkeys[0]);
if (k == -1) k=line.gettoken_enum(2,rootkeys[1]);
if (ent.offsets[0] == -1 || k == -1) PRINTHELP()
- ent.offsets[1]=(int)rootkey_tab[k];
+ ent.offsets[1]=(INT_PTR)rootkey_tab[k];
ent.offsets[2]=add_string(line.gettoken_str(3));
ent.offsets[3]=add_string(line.gettoken_str(4));
if (which_token == TOK_READREGDWORD) ent.offsets[4]=1;
@@ -5216,7 +5216,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
if (k == -1) k=line.gettoken_enum(a,rootkeys[1]);
if (k == -1) PRINTHELP()
ent.which=EW_DELREG;
- ent.offsets[1]=(int)rootkey_tab[k];
+ ent.offsets[1]=(INT_PTR)rootkey_tab[k];
ent.offsets[2]=add_string(line.gettoken_str(a+1));
ent.offsets[3]=(which_token==TOK_DELETEREGKEY)?0:add_string(line.gettoken_str(a+2));
if (line.gettoken_str(a+1)[0] == '\\')
@@ -5236,7 +5236,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
if (k == -1) k=line.gettoken_enum(1,rootkeys[1]);
if (k == -1) PRINTHELP()
ent.which=EW_WRITEREG;
- ent.offsets[0]=(int)rootkey_tab[k];
+ ent.offsets[0]=(INT_PTR)rootkey_tab[k];
ent.offsets[1]=add_string(line.gettoken_str(2));
if (line.gettoken_str(2)[0] == '\\')
warning_fl("%s: registry path name begins with \'\\\', may cause problems",line.gettoken_str(0));
@@ -5305,7 +5305,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
int k=line.gettoken_enum(2,rootkeys[0]);
if (k == -1) k=line.gettoken_enum(2,rootkeys[1]);
if (ent.offsets[0] == -1 || k == -1) PRINTHELP()
- ent.offsets[1]=(int)rootkey_tab[k];
+ ent.offsets[1]=(INT_PTR)rootkey_tab[k];
ent.offsets[2]=add_string(line.gettoken_str(3));
ent.offsets[3]=add_string(line.gettoken_str(4));
ent.offsets[4]=which_token == TOK_ENUMREGKEY;
diff --git a/Source/util.cpp b/Source/util.cpp
index 1111111..2222222 100755
--- a/Source/util.cpp
+++ b/Source/util.cpp
@@ -77,9 +77,9 @@ int update_bitmap(CResourceEditor* re, WORD id, const char* filename, int width/
}
if (width != 0) {
- LONG biWidth;
+ INT32 biWidth;
fseek(f, 18, SEEK_SET); // Seek to the width member of the header
- fread(&biWidth, sizeof(LONG), 1, f);
+ fread(&biWidth, sizeof(INT32), 1, f);
FIX_ENDIAN_INT32_INPLACE(biWidth);
if (width != biWidth) {
fclose(f);
@@ -88,9 +88,9 @@ int update_bitmap(CResourceEditor* re, WORD id, const char* filename, int width/
}
if (height != 0) {
- LONG biHeight;
+ INT32 biHeight;
fseek(f, 22, SEEK_SET); // Seek to the height member of the header
- fread(&biHeight, sizeof(LONG), 1, f);
+ fread(&biHeight, sizeof(INT32), 1, f);
FIX_ENDIAN_INT32_INPLACE(biHeight);
// Bitmap height can be negative too...
if (height != abs(biHeight)) {
@@ -689,8 +689,8 @@ static BOOL GetVxdVersion( LPCSTR szFile, LPDWORD lpdwLen, LPVOID lpData )
}
// Find the beginning of the NT header at offset e_lfanew.
- pNtExeHdr = (PIMAGE_NT_HEADERS) ( (DWORD) pView
- + (DWORD) pDosExeHdr->e_lfanew );
+ pNtExeHdr = (PIMAGE_NT_HEADERS) ( (ULONG_PTR) pView
+ + pDosExeHdr->e_lfanew );
// Check to make sure the file is a VxD.
if ( (DWORD) pNtExeHdr->Signature != IMAGE_VXD_SIGNATURE )
@@ -728,8 +728,8 @@ static BOOL GetVxdVersion( LPCSTR szFile, LPDWORD lpdwLen, LPVOID lpData )
}
// e32_winresoff contains the offset of the resource in the VxD.
- pVerRes = (VXD_VERSION_RESOURCE *) ( (DWORD) pView
- + (DWORD) pLEHdr->e32_winresoff );
+ pVerRes = (VXD_VERSION_RESOURCE *) ( (ULONG_PTR) pView
+ + pLEHdr->e32_winresoff );
dwSize = pVerRes->dwResSize;
pRawRes = &(pVerRes->bVerData);
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tony Theodore <tonyt@logyst.com>
Date: Thu, 9 May 2013 13:08:59 +1000
Subject: [PATCH] i686-w64-mingw32 fixes
diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp
index 1111111..2222222 100755
--- a/Contrib/InstallOptions/InstallerOptions.cpp
+++ b/Contrib/InstallOptions/InstallerOptions.cpp
@@ -13,6 +13,7 @@
#include <cderr.h>
#include "resource.h"
#include "shellapi.h"
+#include <algorithm>
#include <nsis/pluginapi.h> // nsis plugin
@@ -759,7 +760,7 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
DrawText(lpdis->hDC, pField->pszText, -1, &rc, DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);
// Make some more room so the focus rect won't cut letters off
- rc.right = min(rc.right + 2, lpdis->rcItem.right);
+ rc.right = std::min(rc.right + 2, lpdis->rcItem.right);
// Move rect to right if in RTL mode
if (bRTL)
diff --git a/Contrib/Makensisw/afxres.h b/Contrib/Makensisw/afxres.h
index 1111111..2222222 100755
--- a/Contrib/Makensisw/afxres.h
+++ b/Contrib/Makensisw/afxres.h
@@ -1,4 +1,4 @@
-#define _WIN32_IE 0x0400
+#define _WIN32_IE 0x0501
#include <windows.h>
#ifndef IDC_STATIC
diff --git a/Contrib/Makensisw/makensisw.h b/Contrib/Makensisw/makensisw.h
index 1111111..2222222 100755
--- a/Contrib/Makensisw/makensisw.h
+++ b/Contrib/Makensisw/makensisw.h
@@ -22,7 +22,7 @@
#ifndef MAKENSIS_H
#define MAKENSIS_H
-#define _WIN32_IE 0x0400
+#define _WIN32_IE 0x0501
#include <windows.h>
#include <commctrl.h>
#include "utils.h"
diff --git a/Source/SConscript b/Source/SConscript
index 1111111..2222222 100755
--- a/Source/SConscript
+++ b/Source/SConscript
@@ -71,7 +71,7 @@ AddAvailableLibs(env, libs)
##### Defines
-env.Append(CPPDEFINES = ['_WIN32_IE=0x0500'])
+env.Append(CPPDEFINES = ['_WIN32_IE=0x0501'])
##### Set PCH
diff --git a/Source/exehead/SConscript b/Source/exehead/SConscript
index 1111111..2222222 100755
--- a/Source/exehead/SConscript
+++ b/Source/exehead/SConscript
@@ -52,7 +52,7 @@ Import('env compression solid_compression')
env.Append(CPPDEFINES = ['EXEHEAD'])
env.Append(CPPDEFINES = ['WIN32_LEAN_AND_MEAN'])
-env.Append(CPPDEFINES = ['_WIN32_IE=0x0500'])
+env.Append(CPPDEFINES = ['_WIN32_IE=0x0501'])
### Some other settings
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Boris Pek <tehnick-8@yandex.ru>
Date: Fri, 6 May 2016 15:56:21 +0300
Subject: [PATCH] fix build for x86_64-w64-mingw32 targets
diff --git a/Contrib/BgImage/BgImage.cpp b/Contrib/BgImage/BgImage.cpp
index 1111111..2222222 100755
--- a/Contrib/BgImage/BgImage.cpp
+++ b/Contrib/BgImage/BgImage.cpp
@@ -149,7 +149,7 @@ NSISFunc(SetBg) {
return;
}
- oldProc = (void *)SetWindowLong(hwndParent, GWL_WNDPROC, (long)WndProc);
+ oldProc = (void *)SetWindowLongPtr(hwndParent, GWLP_WNDPROC, (long long)WndProc);
}
bgBitmap.bReady = FALSE;
@@ -345,7 +345,7 @@ NSISFunc(Clear) {
NSISFunc(Destroy) {
bgBitmap.bReady = FALSE;
if (IsWindow(hwndParent) && oldProc)
- SetWindowLong(hwndParent, GWL_WNDPROC, (long)oldProc);
+ SetWindowLongPtr(hwndParent, GWLP_WNDPROC, (long long)oldProc);
if (IsWindow(hWndImage))
SendMessage(hWndImage, WM_CLOSE, 0, 0);
hWndImage = 0;
diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp
index 1111111..2222222 100755
--- a/Contrib/InstallOptions/InstallerOptions.cpp
+++ b/Contrib/InstallOptions/InstallerOptions.cpp
@@ -772,7 +772,7 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (lpdis->itemAction & ODA_DRAWENTIRE)
{
// Get TxtColor unless the user has set another using SetCtlColors
- if (!GetWindowLong(lpdis->hwndItem, GWL_USERDATA))
+ if (!GetWindowLongPtr(lpdis->hwndItem, GWLP_USERDATA))
SetTextColor(lpdis->hDC, (COLORREF) pField->hImage);
// Draw the text
@@ -1217,8 +1217,8 @@ int WINAPI createCfgDlg()
mySendMessage(hwCtrl, EM_LIMITTEXT, (WPARAM)pField->nMaxLength, (LPARAM)0);
if (dwStyle & ES_NUMBER)
{
- pField->wndProc = GetWindowLong(hwCtrl, GWL_WNDPROC);
- SetWindowLong(hwCtrl, GWL_WNDPROC, (long) NumbersOnlyPasteWndProc);
+ pField->wndProc = GetWindowLongPtr(hwCtrl, GWLP_WNDPROC);
+ SetWindowLongPtr(hwCtrl, GWLP_WNDPROC, (long) NumbersOnlyPasteWndProc);
}
break;
@@ -1400,7 +1400,7 @@ int WINAPI createCfgDlg()
#ifdef IO_ENABLE_LINK
case FIELD_LINK:
- pField->nParentIdx = SetWindowLong(hwCtrl, GWL_WNDPROC, (long)StaticLINKWindowProc);
+ pField->nParentIdx = SetWindowLongPtr(hwCtrl, GWLP_WNDPROC, (long)StaticLINKWindowProc);
break;
#endif
}
@@ -1438,7 +1438,7 @@ int WINAPI createCfgDlg()
void WINAPI showCfgDlg()
{
- lpWndProcOld = (void *) SetWindowLong(hMainWindow,DWL_DLGPROC,(long)ParentWndProc);
+ lpWndProcOld = (void *) SetWindowLongPtr(hMainWindow,DWLP_DLGPROC,(long)ParentWndProc);
// Tell NSIS to remove old inner dialog and pass handle of the new inner dialog
mySendMessage(hMainWindow, WM_NOTIFY_CUSTOM_READY, (WPARAM)hConfigWindow, 0);
@@ -1460,7 +1460,7 @@ void WINAPI showCfgDlg()
// quit soon, which means the ini might get flushed late and cause crap. :) anwyay.
if (!g_is_cancel) SaveSettings();
- SetWindowLong(hMainWindow,DWL_DLGPROC,(long)lpWndProcOld);
+ SetWindowLongPtr(hMainWindow,DWLP_DLGPROC,(long)lpWndProcOld);
DestroyWindow(hConfigWindow);
// by ORTIM: 13-August-2002
diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp
index 1111111..2222222 100755
--- a/Contrib/Makensisw/makensisw.cpp
+++ b/Contrib/Makensisw/makensisw.cpp
@@ -177,7 +177,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
{
g_sdata.hwnd=hwndDlg;
HICON hIcon = LoadIcon(g_sdata.hInstance,MAKEINTRESOURCE(IDI_ICON));
- SetClassLong(hwndDlg,GCL_HICON,(long)hIcon);
+ SetClassLongPtr(hwndDlg,GCLP_HICON,(long)hIcon);
// Altered by Darren Owen (DrO) on 29/9/2003
// Added in receiving of mouse and key events from the richedit control
SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,(WPARAM)NULL,ENM_SELCHANGE|ENM_MOUSEEVENTS|ENM_KEYEVENTS);
@@ -272,7 +272,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
case WM_ENTERSIZEMOVE:
{
GetClientRect(g_sdata.hwnd, &g_resize.resizeRect);
- return TRUE;
+ return TRUE;
}
case WM_SIZE:
{
diff --git a/Contrib/NSISdl/nsisdl.cpp b/Contrib/NSISdl/nsisdl.cpp
index 1111111..2222222 100755
--- a/Contrib/NSISdl/nsisdl.cpp
+++ b/Contrib/NSISdl/nsisdl.cpp
@@ -344,7 +344,7 @@ __declspec(dllexport) void download (HWND parent,
{
uMsgCreate = RegisterWindowMessage("nsisdl create");
- lpWndProcOld = (void *)SetWindowLong(parent,GWL_WNDPROC,(long)ParentWndProc);
+ lpWndProcOld = (void *)SetWindowLongPtr(parent,GWLP_WNDPROC,(long)ParentWndProc);
SendMessage(parent, uMsgCreate, TRUE, (LPARAM) parent);
@@ -418,7 +418,7 @@ __declspec(dllexport) void download (HWND parent,
if (parent)
{
SendMessage(parent, uMsgCreate, FALSE, (LPARAM) parent);
- SetWindowLong(parent, GWL_WNDPROC, (long)lpWndProcOld);
+ SetWindowLongPtr(parent, GWLP_WNDPROC, (long)lpWndProcOld);
}
break;
}
diff --git a/Contrib/StartMenu/StartMenu.c b/Contrib/StartMenu/StartMenu.c
index 1111111..2222222 100755
--- a/Contrib/StartMenu/StartMenu.c
+++ b/Contrib/StartMenu/StartMenu.c
@@ -120,7 +120,7 @@ void __declspec(dllexport) Init(HWND hwndParent, int string_size, char *variable
}
else
{
- lpWndProcOld = (void *) SetWindowLong(hwndParent, DWL_DLGPROC, (long) ParentWndProc);
+ lpWndProcOld = (void *) SetWindowLongPtr(hwndParent, DWLP_DLGPROC, (long) ParentWndProc);
wsprintf(buf, "%u", hwStartMenuSelect);
pushstring(buf);
}
@@ -145,7 +145,7 @@ void __declspec(dllexport) Show(HWND hwndParent, int string_size, char *variable
}
DestroyWindow(hwStartMenuSelect);
- SetWindowLong(hwndParent, DWL_DLGPROC, (long) lpWndProcOld);
+ SetWindowLongPtr(hwndParent, DWLP_DLGPROC, (long) lpWndProcOld);
}
void __declspec(dllexport) Select(HWND hwndParent, int string_size, char *variables, stack_t **stacktop, extra_parameters *extra)
diff --git a/Contrib/nsDialogs/nsDialogs.c b/Contrib/nsDialogs/nsDialogs.c
index 1111111..2222222 100755
--- a/Contrib/nsDialogs/nsDialogs.c
+++ b/Contrib/nsDialogs/nsDialogs.c
@@ -194,7 +194,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
xtraDrawStyle |= DT_HIDEPREFIX;
// Use blue unless the user has set another using SetCtlColors
- if (!GetWindowLong(lpdis->hwndItem, GWL_USERDATA))
+ if (!GetWindowLongPtr(lpdis->hwndItem, GWLP_USERDATA))
SetTextColor(lpdis->hDC, RGB(0,0,255));
// Draw the text
@@ -276,7 +276,7 @@ void __declspec(dllexport) Create(HWND hwndParent, int string_size, char *variab
SWP_NOZORDER | SWP_NOACTIVATE
);
- g_dialog.parentOriginalWndproc = (WNDPROC) SetWindowLong(hwndParent, DWL_DLGPROC, (long) ParentProc);
+ g_dialog.parentOriginalWndproc = (WNDPROC) SetWindowLongPtr(hwndParent, DWLP_DLGPROC, (long) ParentProc);
g_dialog.rtl = FALSE;
@@ -387,7 +387,7 @@ void __declspec(dllexport) CreateControl(HWND hwndParent, int string_size, char
// set the WndProc for the link control
if(g_dialog.controls[id].type == NSCTL_LINK)
- g_dialog.controls[id].oldWndProc = (WNDPROC) SetWindowLong(hwItem, GWL_WNDPROC, (long) LinkWndProc);
+ g_dialog.controls[id].oldWndProc = (WNDPROC) SetWindowLongPtr(hwItem, GWLP_WNDPROC, (long) LinkWndProc);
// push back result
@@ -588,7 +588,7 @@ void __declspec(dllexport) Show(HWND hwndParent, int string_size, char *variable
// reset wndproc
- SetWindowLong(hwndParent, DWL_DLGPROC, (long) g_dialog.parentOriginalWndproc);
+ SetWindowLongPtr(hwndParent, DWLP_DLGPROC, (long) g_dialog.parentOriginalWndproc);
}
BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
diff --git a/Contrib/zip2exe/main.cpp b/Contrib/zip2exe/main.cpp
index 1111111..2222222 100755
--- a/Contrib/zip2exe/main.cpp
+++ b/Contrib/zip2exe/main.cpp
@@ -633,7 +633,7 @@ BOOL CALLBACK DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
SetDlgItemText(hwndDlg,IDC_INSTPATH,gp_poi);
hIcon=LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_ICON1));
- SetClassLong(hwndDlg,GCL_HICON,(long)hIcon);
+ SetClassLongPtr(hwndDlg,GCLP_HICON,(long)hIcon);
hFont=CreateFont(15,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS,
diff --git a/SCons/Config/gnu b/SCons/Config/gnu
index 1111111..2222222 100755
--- a/SCons/Config/gnu
+++ b/SCons/Config/gnu
@@ -73,6 +73,7 @@ if not defenv['DEBUG']:
stub_env.Append(CCFLAGS = ['-Wall']) # all warnings
stub_env.Append(CCFLAGS = ['-xc']) # force compile as c
stub_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing
+stub_env.Append(CCFLAGS = ['-fpermissive']) # ignore invalid conversion errors (since C++11)
if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
stub_env.Append(LINKFLAGS = ['-s']) # strip
@@ -109,6 +110,7 @@ if not defenv['DEBUG']:
plugin_env.Append(CCFLAGS = ['-Os']) # optimize for size
plugin_env.Append(CCFLAGS = ['-Wall']) # level 3 warnings
plugin_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing
+plugin_env.Append(CCFLAGS = ['-fpermissive']) # ignore invalid conversion errors (since C++11)
if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
plugin_env.Append(LINKFLAGS = ['-s']) # strip
@@ -126,6 +128,7 @@ if not defenv['DEBUG']:
cp_util_env.Append(CCFLAGS = ['-O2']) # optimize
cp_util_env.Append(CCFLAGS = ['-Wall']) # all warnings
cp_util_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing
+cp_util_env.Append(CCFLAGS = ['-fpermissive']) # ignore invalid conversion errors (since C++11)
conf = FlagsConfigure(cp_util_env)
conf.CheckLinkFlag('$MAP_FLAG') # generate map file
diff --git a/Source/exehead/Ui.c b/Source/exehead/Ui.c
index 1111111..2222222 100755
--- a/Source/exehead/Ui.c
+++ b/Source/exehead/Ui.c
@@ -121,7 +121,7 @@ static BOOL NSISCALL _HandleStaticBkColor(UINT uMsg, WPARAM wParam, LPARAM lPara
{
if ((uMsg - WM_CTLCOLOREDIT) <= (WM_CTLCOLORSTATIC - WM_CTLCOLOREDIT))
{
- ctlcolors *c = (ctlcolors *)GetWindowLong((HWND)lParam, GWL_USERDATA);
+ ctlcolors *c = (ctlcolors *)GetWindowLongPtr((HWND)lParam, GWLP_USERDATA);
if (c) {
COLORREF text;
@@ -482,7 +482,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
m_hwndOK=GetDlgItem(hwndDlg,IDOK);
m_hwndCancel=GetDlgItem(hwndDlg,IDCANCEL);
SetDlgItemTextFromLang(hwndDlg,IDC_VERSTR,LANG_BRANDING);
- SetClassLong(hwndDlg,GCL_HICON,(long)g_hIcon);
+ SetClassLongPtr(hwndDlg,GCLP_HICON,(long)g_hIcon);
// use the following line instead of the above, if .rdata needs shirking
//SendMessage(hwndDlg,WM_SETICON,ICON_BIG,(LPARAM)g_hIcon);
#if defined(NSIS_SUPPORT_CODECALLBACKS) && defined(NSIS_CONFIG_ENHANCEDUI_SUPPORT)
@@ -647,7 +647,7 @@ skipPage:
}
if (uMsg == WM_QUERYENDSESSION)
{
- SetWindowLong(hwndDlg, DWL_MSGRESULT, FALSE);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, FALSE);
return TRUE;
}
if (uMsg == WM_COMMAND)
@@ -1290,7 +1290,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
hBMcheck1=LoadBitmap(g_hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
last_selected_tree_item=-1;
- oldTreeWndProc=SetWindowLong(hwndTree1,GWL_WNDPROC,(long)newTreeWndProc);
+ oldTreeWndProc=SetWindowLongPtr(hwndTree1,GWLP_WNDPROC,(long)newTreeWndProc);
hImageList = ImageList_Create(16,16, ILC_COLOR32|ILC_MASK, 6, 0);
ImageList_AddMasked(hImageList,hBMcheck1,RGB(255,0,255));
diff --git a/Source/exehead/exec.c b/Source/exehead/exec.c
index 1111111..2222222 100755
--- a/Source/exehead/exec.c
+++ b/Source/exehead/exec.c
@@ -788,7 +788,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_SETCTLCOLORS:
{
ctlcolors *c = (ctlcolors *)(g_blocks[NB_CTLCOLORS].offset + parm1);
- SetWindowLong((HWND) GetIntFromParm(0), GWL_USERDATA, (long) c);
+ SetWindowLongPtr((HWND) GetIntFromParm(0), GWLP_USERDATA, (long) c);
}
break;
case EW_SETBRANDINGIMAGE:
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Boris Pek <tehnick-8@yandex.ru>
Date: Mon, 16 May 2016 15:12:58 +0300
Subject: [PATCH] Fix stdcall
Taken from:
http://anonscm.debian.org/gitweb/?p=collab-maint/nsis.git;a=blob;f=debian/patches/stdcall.patch;h=46b497e3a48a145afba97644390ac2e026225e89;hb=HEAD
diff --git a/SCons/Config/gnu b/SCons/Config/gnu
index 1111111..2222222 100755
--- a/SCons/Config/gnu
+++ b/SCons/Config/gnu
@@ -9,6 +9,14 @@ Import('FlagsConfigure')
### cross compiling
def cross_env(env):
+ # Set stdcall calling convention for Win32 targets
+ if env.has_key('CPPDEFINES'):
+ for i in range(len(env['CPPDEFINES'])):
+ if 'NSISCALL' in env['CPPDEFINES'][i]:
+ env['CPPDEFINES'][i] = ('NSISCALL', '\'$STDCALL\'')
+ break
+ else:
+ env.Append(CPPDEFINES = [('NSISCALL', '$STDCALL')])
if env['PLATFORM'] != 'win32':
env.Tool('crossmingw', toolpath = [Dir('../Tools').rdir()])
@@ -35,7 +43,7 @@ defenv['STDCALL'] = '__attribute__((__stdcall__))'
### defines
-defenv.Append(CPPDEFINES = [('NSISCALL', '$STDCALL')])
+defenv.Append(CPPDEFINES = [('NSISCALL', '')])
### helper functions

View File

@ -2,11 +2,11 @@
PKG := nsis
$(PKG)_IGNORE :=
$(PKG)_VERSION := 2.51
$(PKG)_CHECKSUM := 43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
$(PKG)_VERSION := 3.01
$(PKG)_CHECKSUM := 604c011593be484e65b2141c50a018f1b28ab28c994268e4ecd377773f3ffba1
$(PKG)_SUBDIR := nsis-$($(PKG)_VERSION)-src
$(PKG)_FILE := nsis-$($(PKG)_VERSION)-src.tar.bz2
$(PKG)_URL := http://$(SOURCEFORGE_MIRROR)/project/nsis/NSIS 2/$($(PKG)_VERSION)/$($(PKG)_FILE)
$(PKG)_URL := http://$(SOURCEFORGE_MIRROR)/project/nsis/NSIS 3/$($(PKG)_VERSION)/$($(PKG)_FILE)
$(PKG)_DEPS := gcc
define $(PKG)_UPDATE