Don't limit uploads.
[fedora-mingw.git] / nsis / nsis-2.19-debian-64bit-fixes.patch
1 01_64bit_fixes.patch
2 Andreas Jochens <aj@andaco.de>, Andreas Barth <aba@not.so.argh.org>,
3 Steve Langasek <vorlon@debian.org>, Paul Wise <pabs@debian.org>
4 Fix some issues with building and running makensis on 64-bit platforms
5 Index: Source/DialogTemplate.cpp
6 ===================================================================
7 --- Source/DialogTemplate.cpp.orig      2007-01-30 09:03:35.000000000 +0100
8 +++ Source/DialogTemplate.cpp   2007-01-30 09:03:56.000000000 +0100
9 @@ -93,7 +93,7 @@
10      if (IS_INTRESOURCE(x)) { \\r
11        *(WORD*)seeker = 0xFFFF; \\r
12        seeker += sizeof(WORD); \\r
13 -      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \\r
14 +      *(WORD*)seeker = ConvertEndianness(WORD(long(x))); \\r
15        seeker += sizeof(WORD); \\r
16      } \\r
17      else { \\r
18 @@ -629,7 +629,7 @@
19      }\r
20    }\r
21  \r
22 -  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);\r
23 +  assert((long) seeker - (long) pbDlg == dwSize);\r
24  \r
25    // DONE!\r
26    return pbDlg;\r
27 Index: Source/Platform.h
28 ===================================================================
29 --- Source/Platform.h.orig      2007-01-30 09:03:35.000000000 +0100
30 +++ Source/Platform.h   2007-01-30 09:05:35.000000000 +0100
31 @@ -135,7 +135,7 @@
32  #    define MAKEINTRESOURCE(i) (LPSTR)((DWORD)((WORD)(i)))\r
33  #  endif\r
34  #  ifndef IMAGE_FIRST_SECTION\r
35 -#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \\r
36 +#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (long) h + \\r
37                                       FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) + \\r
38                                       FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )\r
39  #  endif\r
40 @@ -147,7 +147,7 @@
41  #  endif\r
42  #endif\r
43  #ifndef IS_INTRESOURCE\r
44 -#  define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)\r
45 +#  define IS_INTRESOURCE(_r) (((unsigned long)(_r) >> 16) == 0)\r
46  #endif\r
47  \r
48  // functions\r
49 @@ -666,7 +666,7 @@
50    WORD e_oemid;\r
51    WORD e_oeminfo;\r
52    WORD e_res2[10];\r
53 -  LONG e_lfanew;\r
54 +  DWORD e_lfanew;\r
55  } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;\r
56  #  pragma pack()\r
57  #  pragma pack(4)\r
58 Index: Source/ResourceEditor.cpp
59 ===================================================================
60 --- Source/ResourceEditor.cpp.orig      2007-01-30 09:03:35.000000000 +0100
61 +++ Source/ResourceEditor.cpp   2007-01-30 09:03:56.000000000 +0100
62 @@ -545,7 +545,7 @@
63      rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);\r
64  \r
65      CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));\r
66 -    crd->m_dwWrittenAt = DWORD(seeker);\r
67 +    crd->m_dwWrittenAt = long(seeker);\r
68      seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);\r
69  \r
70      for (int i = 0; i < crd->CountEntries(); i++) {\r
71 @@ -566,7 +566,7 @@
72        rDirE.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0;\r
73  \r
74        CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));\r
75 -      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);\r
76 +      crd->GetEntry(i)->m_dwWrittenAt = long(seeker);\r
77        seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);\r
78      }\r
79      qDirs.pop();\r
80 @@ -582,7 +582,7 @@
81      rDataE.Size = ConvertEndianness(cRDataE->GetSize());\r
82  \r
83      CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));\r
84 -    cRDataE->m_dwWrittenAt = DWORD(seeker);\r
85 +    cRDataE->m_dwWrittenAt = long(seeker);\r
86      seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);\r
87  \r
88      qDataEntries.pop();\r
89 @@ -594,7 +594,7 @@
90    while (!qStrings.empty()) {\r
91      CResourceDirectoryEntry* cRDirE = qStrings.front();\r
92  \r
93 -    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));\r
94 +    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(long(seeker) - long(pbRsrcSec));\r
95  \r
96      char* szName = cRDirE->GetName();\r
97      WORD iLen = strlen(szName) + 1;\r
98 @@ -636,7 +636,7 @@
99    /*\r
100     * Set all of the directory entries offsets.\r
101     */\r
102 -  SetOffsets(m_cResDir, DWORD(pbRsrcSec));\r
103 +  SetOffsets(m_cResDir, long(pbRsrcSec));\r
104  }\r
105  \r
106  // Sets the offsets in directory entries\r
107 @@ -758,7 +758,7 @@
108  // Returns -1 if can not be found\r
109  int CResourceDirectory::Find(char* szName) {\r
110    if (IS_INTRESOURCE(szName))\r
111 -    return Find((WORD) (DWORD) szName);\r
112 +    return Find((WORD) (long) szName);\r
113    else\r
114      if (szName[0] == '#')\r
115        return Find(WORD(atoi(szName + 1)));\r
116 @@ -836,7 +836,7 @@
117    if (IS_INTRESOURCE(szName)) {\r
118      m_bHasName = false;\r
119      m_szName = 0;\r
120 -    m_wId = (WORD) (DWORD) szName;\r
121 +    m_wId = (WORD) (long) szName;\r
122    }\r
123    else {\r
124      m_bHasName = true;\r
125 @@ -851,7 +851,7 @@
126    if (IS_INTRESOURCE(szName)) {\r
127      m_bHasName = false;\r
128      m_szName = 0;\r
129 -    m_wId = (WORD) (DWORD) szName;\r
130 +    m_wId = (WORD) (long) szName;\r
131    }\r
132    else {\r
133      m_bHasName = true;\r
134 Index: Source/util.cpp
135 ===================================================================
136 --- Source/util.cpp.orig        2007-01-30 09:03:35.000000000 +0100
137 +++ Source/util.cpp     2007-01-30 09:07:54.000000000 +0100
138 @@ -57,9 +57,9 @@
139    }\r
140  \r
141    if (width != 0) {\r
142 -    LONG biWidth;\r
143 +    DWORD biWidth;\r
144      fseek(f, 18, SEEK_SET); // Seek to the width member of the header\r
145 -    fread(&biWidth, sizeof(LONG), 1, f);\r
146 +    fread(&biWidth, sizeof(DWORD), 1, f);\r
147      FIX_ENDIAN_INT32_INPLACE(biWidth);\r
148      if (width != biWidth) {\r
149        fclose(f);\r
150 @@ -68,12 +68,12 @@
151    }\r
152  \r
153    if (height != 0) {\r
154 -    LONG biHeight;\r
155 +    DWORD biHeight;\r
156      fseek(f, 22, SEEK_SET); // Seek to the height member of the header\r
157 -    fread(&biHeight, sizeof(LONG), 1, f);\r
158 +    fread(&biHeight, sizeof(DWORD), 1, f);\r
159      FIX_ENDIAN_INT32_INPLACE(biHeight);\r
160      // Bitmap height can be negative too...\r
161 -    if (height != abs(biHeight)) {\r
162 +    if (height != abs((long int)biHeight)) {\r
163        fclose(f);\r
164        return -3;\r
165      }\r
166 @@ -312,7 +312,7 @@
167    FIX_ENDIAN_INT32_INPLACE(rdEntry.OffsetToData);\r
168    MY_ASSERT(!rdEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");\r
169  \r
170 -  PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));\r
171 +  PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + long(rdRoot));\r
172  \r
173    MY_ASSERT((size_t)rdIcons - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");\r
174  \r
175 @@ -325,7 +325,7 @@
176      FIX_ENDIAN_INT32_INPLACE(icoEntry.OffsetToData);\r
177  \r
178      MY_ASSERT(!icoEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");\r
179 -    PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));\r
180 +    PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + long(rdRoot));\r
181      \r
182      MY_ASSERT((size_t)rd - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");\r
183  \r
184 @@ -334,7 +334,7 @@
185  \r
186      MY_ASSERT(datEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");\r
187      \r
188 -    PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + DWORD(rdRoot));\r
189 +    PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + long(rdRoot));\r
190  \r
191      MY_ASSERT((size_t)rde - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");\r
192  \r
193 @@ -355,10 +355,10 @@
194      }\r
195  \r
196      // Set offset\r
197 -    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + DWORD(rdRoot) - dwResourceSectionVA - DWORD(exeHeader);\r
198 +    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + long(rdRoot) - dwResourceSectionVA - long(exeHeader);\r
199      *(LPDWORD) seeker = FIX_ENDIAN_INT32(dwOffset);\r
200  \r
201 -    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (DWORD)rdRoot - (DWORD)exeHeader, "invalid data offset - icon resource probably compressed");\r
202 +    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (long)rdRoot - (long)exeHeader, "invalid data offset - icon resource probably compressed");\r
203    }\r
204  \r
205    LPBYTE seeker = uninstIconData;\r
206 Index: Source/Plugins.cpp
207 ===================================================================
208 --- Source/Plugins.cpp.orig     2007-01-30 09:05:50.000000000 +0100
209 +++ Source/Plugins.cpp  2007-01-30 09:07:05.000000000 +0100
210 @@ -120,7 +120,7 @@
211          DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);\r
212          PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] + prd + ExportDirVA - va);\r
213          DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);\r
214 -        unsigned long *names = (unsigned long*)((unsigned long) exports + (char *) na - ExportDirVA);\r
215 +        unsigned int *names = (unsigned int*)((unsigned long) exports + (char *) na - ExportDirVA);\r
216          for (unsigned long j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)\r
217          {\r
218            const string name = string((char*)exports + FIX_ENDIAN_INT32(names[j]) - ExportDirVA);\r