ATL creates wrong registry entries

Cihan Altinay cihan at uq.edu.au
Wed Nov 16 17:58:19 CST 2005


Jacek Caban wrote:
> Hi Cihan,
> 
> Cihan Altinay wrote:
> 
>> Ok, I looked into it again and found a solution. The problem
>> was that the '{' character was treated as a separator which
>> is generally correct. But it seems that key names like the one
>> mentioned above are allowed without single quotes around them.
>> The attached patch doesn't look very nice but solves the problem.
>> I am aware that it implies that there must be whitespace between
>> '{' and the next character if it _is_ a separator. But it seems
>> the same condition is already true for '}' in the code.
>> Could Jacek or somebody else who worked on this file comment on
>> this and tell me if I can submit the patch?
> 
> 
> You're right. I've tested it and '{' followed by non-whitespace should
> be interpreted as string, not a separator. Your patch is correct, but
> removing *iter == '{' test from if has the same result and is cleaner.
> Then we need to make sure that we have a single '{' character in one
> more place. Could you test the attached patch?
> 

> @@ -321,7 +321,7 @@ static HRESULT do_process_key(LPCOLESTR 
>              break;
>          }
>  
> -        if(key_type != IS_VAL && key_type != DO_DELETE && *iter == '{') {
> +        if(key_type != IS_VAL && key_type != DO_DELETE && *iter == '{' && !iter[1]) {
>              hres = get_word(&iter, buf);
>              if(FAILED(hres))
>                  break;

if you replace !iter[1] by isspaceW(iter[1]) it works. Otherwise it
breaks things :-)

Thanks a lot,
Cihan



More information about the wine-devel mailing list