kernel32: Overhaul the handling of argv in set_process_name().

Sebastian Lackner sebastian at fds-team.de
Tue Jul 12 14:45:26 CDT 2016


On 12.07.2016 06:44, Ken Thomases wrote:
> This fixes several problems with the code:
> 
> * The code had been assuming that the argument strings pointed to by the argv
>   array are contiguous iff certain process-name-setting functions are available.
>   This doesn't seem reliable.  Instead, test if it's true and shift the strings
>   if so.

Thanks for working on this, looks indeed like a nice improvement.

> 
>   However, setproctitle() is specifically documented as a preferred alternative
>   to the technique of overwriting the arg strings, so don't shift the strings
>   if that's available.

Wouldn't it make sense to remove the directory component also in this case, to
be consistent? By moving the code to the bottom all functions would be called
in the same way.

> 
> * Use the last path component, recognizing backslash as a path separator, for
>   setprogname() in addition to prctl().  First, setprogname() is documented as
>   searching for the last component itself, but it doesn't understand Windows-
>   style paths, so we need to help it.  Second, on some platforms (e.g. macOS),
>   setprogname(), like prctl(), has a fairly small internal length limit (e.g.
>   32 characters).  So, concentrate on the most meaningful part of the path.
> 
> * Remove argv[0] from argv whether or not there are any process-name-setting
>   functions available.  This is necessary for the proper functioning of Wine,
>   so it must be done on all platforms.  This part of the logic was lost with
>   commit 5a4576ee0.
> 
> * Call all available process-name-setting functions instead of treating them
>   as mutually exclusive alternatives.  This is also logic that was lost with
>   commit 5a4576ee0.
> 
> Signed-off-by: Ken Thomases <ken at codeweavers.com>
> ---
>  dlls/kernel32/process.c | 63 +++++++++++++++++++++++++++++--------------------
>  1 file changed, 37 insertions(+), 26 deletions(-)
> 




More information about the wine-devel mailing list