ntdll: Replace malloc() with RtlAllocateHeap()

Rob Shearman robertshearman at gmail.com
Wed Feb 18 09:34:32 CST 2009


2009/2/17 Andrew Talbot <andrew.talbot at talbotville.com>:
> Changelog:
>    ntdll: Replace malloc() with RtlAllocateHeap().
>
> diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
> index 145540f..0cade3f 100644
> --- a/dlls/ntdll/server.c
> +++ b/dlls/ntdll/server.c
> @@ -743,13 +743,13 @@ static void setup_config_dir(void)
>             struct stat st;
>             char *tmp_dir;
>
> -            if (!(tmp_dir = malloc( p + 1 - config_dir ))) fatal_error( "out of memory\n" );
> +            if (!(tmp_dir = RtlAllocateHeap( GetProcessHeap(), 0, p + 1 - config_dir ))) fatal_error( "out of memory\n" );
>             memcpy( tmp_dir, config_dir, p - config_dir );
>             tmp_dir[p - config_dir] = 0;
>             if (!stat( tmp_dir, &st ) && st.st_uid != getuid())
>                 fatal_error( "'%s' is not owned by you, refusing to create a configuration directory there\n",
>                              tmp_dir );
> -            free( tmp_dir );
> +            RtlFreeHeap( GetProcessHeap(), 0, tmp_dir );
>         }

I'd be surprised if this worked, since setup_config_dir is called very
early in the ntdll execution sequence, and RtlAllocateHeap itself will
depend on server calls (NtAllocateVirtualMemory, NtCreateMutex, etc.)
that depend on the server having started (i.e. after this function
having already executed).

-- 
Rob Shearman



More information about the wine-devel mailing list