Fix POSIX error
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6846 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
c7a74bbaba
commit
264fc910aa
3 changed files with 17 additions and 2 deletions
|
@ -492,6 +492,12 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
|||
# define SHACF_FILESYSTEM 1
|
||||
#endif
|
||||
|
||||
#ifndef SEE_MASK_NOCLOSEPROCESS
|
||||
#define SEE_MASK_NOCLOSEPROCESS 0x00000040
|
||||
#define SEE_MASK_FLAG_NO_UI 0x00000400
|
||||
#define SEE_MASK_FLAG_DDEWAIT 0x00000100
|
||||
#endif
|
||||
|
||||
// other stuff
|
||||
|
||||
#ifndef CP_ACP
|
||||
|
|
|
@ -3257,7 +3257,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
ret=RunChildProcessRedirected(exec, forceutf8 ? true : false);
|
||||
else
|
||||
#endif //~ _WIN32
|
||||
ret=sane_system(exec);
|
||||
ret=sane_system(exec), (void)forceutf8; // forceutf8 is not used on POSIX
|
||||
if (comp == 5)
|
||||
{
|
||||
_stprintf(buf,_T("%d"),ret);
|
||||
|
@ -5425,7 +5425,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
ERROR_MSG(_T("%") NPRIs _T(": %d bytes of data exceeded\n"),cmdname,sizeof(data));
|
||||
return PS_ERROR;
|
||||
}
|
||||
if (multisz && (data_len < 4 || *(UINT32*)(&data[data_len-4]))) PRINTHELPEX(cmdname);
|
||||
if (multisz && (data_len < 4 || 0 != read_ptr_as<UINT32>(&data[data_len-4]))) PRINTHELPEX(cmdname); // Must end with 4 zero bytes
|
||||
SCRIPT_MSG(_T("%") NPRIs _T(": %") NPRIs _T("\\%") NPRIs _T("\\%") NPRIs _T("=%") NPRIs _T("\n"),
|
||||
cmdname,line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3),line.gettoken_str(4));
|
||||
if (multisz && !build_unicode) for (int p1=0, p2=p1; p1 < data_len; data_len--) data[p1++]=data[p2], p2+=2; // BUGBUG: Should convert each string from UTF-16 to DBCS but only exehead knows the codepage, limited to ASCII for now.
|
||||
|
|
|
@ -276,6 +276,15 @@ FILE* my_fopen(const TCHAR *path, const char *mode);
|
|||
// assumption: T is an int type
|
||||
template <class T> inline T align_to_512(const T x) { return (x+511) & ~511; }
|
||||
|
||||
template<class T> inline T read_ptr_as(const void*p)
|
||||
{
|
||||
#if defined(_MSC_VER) && (_MSC_VER-0 < 1400) // TODO: Figure out which versions are able to optimize the memcpy
|
||||
return *(T*)(p);
|
||||
#else
|
||||
T t; memcpy(&t, p, sizeof(T)); return t;
|
||||
#endif
|
||||
}
|
||||
|
||||
// some values need to be truncated from size_t to [unsigned] int, using this function is better than a plain cast
|
||||
template<class R, class T> inline R internaltruncate_cast(T t) {
|
||||
assert((~((T)0)) > T(0)); // Only unsigned types supported right now
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue