Fix for spawning windows processes

Ralf Habacker ralf.habacker at freenet.de
Thu Apr 29 02:39:40 PDT 2010


Ralf Habacker schrieb:
> Fridrich Strba schrieb:
>> Hello, Joerg,
>>
>> Nice to see you again :)
>>
>> Now, I really would then prefer something like:
>>
>> if (!strings || !string[0])
>> return NULL;
>>
>> At least for my TrainedMonkey eyes it is a bit more readable. But,
>> again, no religion, just preference.
>>
>> Attached is the new patch
>>   
> Applying: Pass the environment to CreateProcessA correctly and be more 
> defensive
> t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:14: 
> trailing whitespace.
> compose_string (char **strings, char separator)
> t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:24: 
> trailing whitespace.
>  if (!strings || !strings[0])
> t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:25: 
> trailing whitespace.
>    return 0;
> t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:26: 
> trailing whitespace.
>  for (i = 0; strings[i]; i++)
> t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:27: 
> trailing whitespace.
>    n += strlen (strings[i]) + 1;
> error: patch failed: dbus/dbus-spawn-win.c:471
> error: dbus/dbus-spawn-win.c: patch does not apply
> Patch failed at 0001 Pass the environment to CreateProcessA correctly 
> and be more defensive
>
> still problems with this patch
got it by myself -  mingw git expects unix eol.

Ralf

>
>> Cheers
>>
>> Fridrich
>>
>> On Wed, 2010-04-28 at 14:01 +0200, Jörg Barfurth wrote:  
>>> Fridrich Strba schrieb:
>>>    
>>>> I did it intentionally, but left it there because I wanted it to raise
>>>> the question. If you have only teh argv[0] in your argv, why to leave
>>>> the space after the name there?       
>>> But you have i==0 only, if there was no string at all in argv.
>>>
>>> The same issue still exists in your new patch. Now i==0 signifies 
>>> that strings is not NULL, but points at an empty string sequence 
>>> (i.e. strings[0] == NULL). So p still points at the start of the 
>>> buffer. Without the 'if(i)' check you'll write outside (before) the 
>>> buffer in that case.
>>>
>>>    
>>>> The windows documentation is saying
>>>> "The system adds a terminating null character to the command-line 
>>>> string
>>>> to separate the file name from the arguments. This divides the 
>>>> original
>>>> string into two strings for internal processing."
>>>> So, was wondering whether one if cannot be saved :)
>>>>
>>>>       P.S.: If there is a good reason to do the previous thing, I 
>>>> am not
>>>> having any religious opinion about that. Just was wondering :)
>>>>
>>>>       
>>> It was simply good defensive style. Now that you are making the 
>>> method more generic, so that you can rule out empty string lists 
>>> even less, I strongly suggest reintroducing it.
>>>
>>> Ciao
>>>
>>> - Jörg
>>>
>>>
>>>    
>>>> On Wed, 2010-04-28 at 10:44 +0200, Ralf Habacker wrote:      
>>>>> Fridrich Strba schrieb:
>>>>>        
>>>>>> Hello,
>>>>>>
>>>>>> This patch is fixing a bug in dbus/dbus-spawn-win.c
>>>>>> Maybe the two (build_commandline and build_env_string) could 
>>>>>> share some
>>>>>> code.
>>>>>>
>>>>>>             
>>>>> is the following fix  intended ?
>>>>>
>>>>> @@ -492,20 +492,46 @@ build_commandline (char **argv)
>>>>>        p += strlen (argv[i]);
>>>>>        *(p++) = ' ';
>>>>>      }
>>>>> -  if (i)
>>>>> +//  if (i)
>>>>>      p--;
>>>>>    *p = '\0';
>>>>>  
>>>>>    return buf;
>>>>>  }
>>>>>
>>>>> regards Ralf
>>>>>         
>>>     
>>
>>
>>   
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> dbus mailing list
>> dbus at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dbus
>
> _______________________________________________
> dbus mailing list
> dbus at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dbus



More information about the dbus mailing list