chrismorgan@rcn.com wrote:
HANDLE hFile = CreateFileA( filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); BOOL ret = FALSE;
- if(!GetBinaryTypeA(filename, &binType)) /* determine what kind of binary this is */
- {
- return FALSE; /* binary is not an executable */
- }
You are leaking the file handle here. Better move the GetBinaryTypeA call before the CreateFileA.
status = CreateProcessA (NULL, fullCmdLine, NULL, NULL, TRUE,
0, envblock, NULL, &st, &pe);
WaitForSingleObject(pe.hProcess, INFINITE); /* wait here until the child process is complete */
HeapFree(GetProcessHeap(), 0, fullCmdLine); /* free the memory we allocated */
/* clean up PROCESS_INFORMATION handles if necessary */
if(status)
{
CloseHandle(pe.hProcess);
CloseHandle(pe.hThread);
}
Potential wait on an invalid pe.hProcess. Better:
if (satus) { WaitForSingleObject(pe.hProcess, INFINITE); CloseHandle(pe.hProcess); CloseHandle(pe.hThread); }