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