Use ReadFile helper function in exehead

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6395 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2013-07-25 19:18:34 +00:00
parent a5f0809ee9
commit 19b9a3e65a
4 changed files with 15 additions and 9 deletions

View file

@ -1406,7 +1406,6 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#endif #endif
{ {
TCHAR *textout=var1; TCHAR *textout=var1;
DWORD dw;
int rpos=0; int rpos=0;
TCHAR *hptr=var0; TCHAR *hptr=var0;
int maxlen=GetIntFromParm(2); int maxlen=GetIntFromParm(2);
@ -1427,17 +1426,17 @@ static int NSISCALL ExecuteEntry(entry *entry_)
And what if the multibyte character needs two WCHARs? And what if the multibyte character needs two WCHARs?
*/ */
char tmpc; char tmpc;
if (!ReadFile(h,&tmpc,1,&dw,NULL) || dw != 1) break; if (!myReadFile(h,&tmpc,1)) break;
if (0==MultiByteToWideChar(CP_ACP, 0, &tmpc, 1, &c, 1)) c = _T('?'); if (0==MultiByteToWideChar(CP_ACP, 0, &tmpc, 1, &c, 1)) c = _T('?');
} }
else else
#endif #endif
{ {
if (!ReadFile(h,&c,1,&dw,NULL) || dw != 1) break; if (!myReadFile(h,&c,1)) break;
} }
if (parm3) if (parm3)
{ {
myitoa(textout,(unsigned int)(_TUCHAR)c); myitoa(textout,(unsigned char)c);
return 0; return 0;
} }
if (lc == _T('\r') || lc == _T('\n')) if (lc == _T('\r') || lc == _T('\n'))

View file

@ -540,7 +540,7 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, unsigned char *outbuf, int o
retval=__ensuredata(sizeof(int)); retval=__ensuredata(sizeof(int));
if (retval<0) return retval; if (retval<0) return retval;
if (!ReadFile(dbd_hFile,(LPVOID)&input_len,sizeof(int),&r,NULL) || r!=sizeof(int)) return -3; if (!myReadFile(dbd_hFile,(LPVOID)&input_len,sizeof(int))) return -3;
dbd_pos+=sizeof(int); dbd_pos+=sizeof(int);
retval=__ensuredata(input_len); retval=__ensuredata(input_len);
@ -552,7 +552,7 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, unsigned char *outbuf, int o
{ {
DWORD t; DWORD t;
DWORD l=min(input_len,IBUFSIZE); DWORD l=min(input_len,IBUFSIZE);
if (!ReadFile(dbd_hFile,(LPVOID)_inbuffer,l,&r,NULL) || l != r) return -3; if (!myReadFile(dbd_hFile,(LPVOID)_inbuffer,r=l)) return -3;
if (!WriteFile(hFileOut,_inbuffer,r,&t,NULL) || t != l) return -2; if (!WriteFile(hFileOut,_inbuffer,r,&t,NULL) || t != l) return -2;
retval+=r; retval+=r;
input_len-=r; input_len-=r;
@ -571,8 +571,7 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, unsigned char *outbuf, int o
BOOL NSISCALL ReadSelfFile(LPVOID lpBuffer, DWORD nNumberOfBytesToRead) BOOL NSISCALL ReadSelfFile(LPVOID lpBuffer, DWORD nNumberOfBytesToRead)
{ {
DWORD rd; return myReadFile(g_db_hFile,lpBuffer,nNumberOfBytesToRead);
return ReadFile(g_db_hFile,lpBuffer,nNumberOfBytesToRead,&rd,NULL) && (rd == nNumberOfBytesToRead);
} }
DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove) DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove)

View file

@ -449,6 +449,13 @@ TCHAR * NSISCALL my_GetTempFileName(TCHAR *buf, const TCHAR *dir)
return 0; return 0;
} }
BOOL NSISCALL myReadFile(HANDLE h, LPVOID buf, DWORD cb)
{
DWORD cbio;
BOOL r = ReadFile(h, buf, cb, &cbio, NULL);
return r && cb == cbio;
}
#ifdef NSIS_SUPPORT_MOVEONREBOOT #ifdef NSIS_SUPPORT_MOVEONREBOOT
/** Modifies the wininit.ini file to rename / delete a file. /** Modifies the wininit.ini file to rename / delete a file.
* *
@ -503,7 +510,7 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
if (pszWinInit != NULL) if (pszWinInit != NULL)
{ {
if (ReadFile(hfile, pszWinInit, dwFileSize, &dwBytes, NULL) && dwFileSize == dwBytes) if (myReadFile(hfile, pszWinInit, dwFileSize))
{ {
// Look for the rename section in the current file. // Look for the rename section in the current file.
LPSTR pszRenameSecInFile = mystrstriA(pszWinInit, szRenameSec); LPSTR pszRenameSecInFile = mystrstriA(pszWinInit, szRenameSec);

View file

@ -41,6 +41,7 @@ TCHAR * NSISCALL mystrcat(TCHAR *out, const TCHAR *concat);
TCHAR * NSISCALL mystrstr(TCHAR *a, TCHAR *b); TCHAR * NSISCALL mystrstr(TCHAR *a, TCHAR *b);
WIN32_FIND_DATA * NSISCALL file_exists(TCHAR *buf); WIN32_FIND_DATA * NSISCALL file_exists(TCHAR *buf);
TCHAR * NSISCALL my_GetTempFileName(TCHAR *buf, const TCHAR *dir); TCHAR * NSISCALL my_GetTempFileName(TCHAR *buf, const TCHAR *dir);
BOOL NSISCALL myReadFile(HANDLE h, LPVOID buf, DWORD cb);
//BOOL NSISCALL my_SetWindowText(HWND hWnd, const TCHAR *val); //BOOL NSISCALL my_SetWindowText(HWND hWnd, const TCHAR *val);
#define my_SetWindowText SetWindowText #define my_SetWindowText SetWindowText