msvcrt: dont overwrite the standard streams (with test, try 5)

Eric Pouech eric.pouech at orange.fr
Sun Sep 6 09:28:40 CDT 2009


André Hentschel a écrit :
> Some Apps e.g. mingw-apps use lpReserved2 to pass some data to the child-process, this data starts with 4 Byte of Zeros(unsinged 0) to tell msvcrt not to read that as an inherit-block.
>   
Hi André
a couple of comments to your patch
> See also Bug 18479
> ---
>  dlls/msvcrt/file.c            |    2 +-
>  dlls/msvcrt/tests/Makefile.in |    2 +-
>  dlls/msvcrt/tests/file.c      |   50 +++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 52 insertions(+), 2 deletions(-)
>
> diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
> index 6671f2f..8f63e8d 100644
> --- a/dlls/msvcrt/file.c
> +++ b/dlls/msvcrt/file.c
> @@ -349,7 +349,7 @@ void msvcrt_init_io(void)
>    InitializeCriticalSection(&MSVCRT_file_cs);
>    MSVCRT_file_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": MSVCRT_file_cs");
>    GetStartupInfoA(&si);
> -  if (si.cbReserved2 != 0 && si.lpReserved2 != NULL)
> +  if (si.cbReserved2 != 0 && si.lpReserved2 != NULL && *(unsigned*)si.lpReserved2)
>   
IMO, we should also test that cbReserved2 is >= sizeof(unsigned) 
otherwise we'd be in trouble
>    {
>      char*       wxflag_ptr;
>      HANDLE*     handle_ptr;
> diff --git a/dlls/msvcrt/tests/Makefile.in b/dlls/msvcrt/tests/Makefile.in
> index 74199e1..8c71971 100644
> --- a/dlls/msvcrt/tests/Makefile.in
> +++ b/dlls/msvcrt/tests/Makefile.in
> @@ -4,7 +4,7 @@ SRCDIR    = @srcdir@
>  VPATH     = @srcdir@
>  TESTDLL   = msvcrt.dll
>  APPMODE   = -mno-cygwin
> -IMPORTS   = kernel32
> +IMPORTS   = kernel32 user32
>   
you should do it without user32. instead of doing this
> +    while (MsgWaitForMultipleObjects( 1, &proc.hProcess, FALSE, INFINITE, QS_ALLINPUT ) != 0)
> +    {
> +        while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessageA(&msg);
> +    }
>   
you could simply wait for the child process to terminate
A+

-- 
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the ingenuity of a complete idiot." (Douglas Adams)






More information about the wine-patches mailing list