Kusanagi Kouichi : winex11: Destroy the handle to the composition string after it is cancelled.

Aric Stewart aric at codeweavers.com
Fri Apr 25 14:44:00 CDT 2008


No, from updateCompStr

     if (old == NULL && compstr == NULL && len == 0)
         return NULL;

Otherwise it returns a compstr. So it only should return NULL if all the 
incoming parameters are NULL, which i do not believe should ever happen 
after i went through and made sure that the hCompStr was never NULL.

-aric

Kusanagi Kouichi wrote:
> On Fri, Apr 25, 2008 at 09:36:36AM -0500, Aric Stewart wrote:
>> Comming in a bit late on this one, (missed the patch submission)
>>
>> I do not think this is correct as far as i know hCompStr should never be 
>> NULL. Much of our code depends on that not being NULL.
>>
>> I would recommend using ImeCreateBlankCompStr instead. (something like 
>> below)
>>
>> diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c
>> index f50549f..8fa6f6f 100644
>> --- a/dlls/winex11.drv/ime.c
>> +++ b/dlls/winex11.drv/ime.c
>> @@ -778,7 +778,7 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, 
>> DWORD dwInd
>>                       if (lpIMC->hCompStr)
>>                       {
>>                           ImmDestroyIMCC(lpIMC->hCompStr);
>> -                        lpIMC->hCompStr = NULL;
>> +                        lpIMC->hCompStr = ImeCreateBlankCompStr();
>>                       }
>>
>>                       myPrivate = 
>> (LPIMEPRIVATE)ImmLockIMCC(lpIMC->hPrivate);
>>
>> -aric
> 
> Then, are these also wrong? updateCompStr returns NULL if NULL or 0 is given.
>    748	                        newCompStr = updateCompStr(lpIMC->hCompStr, NULL, 0);
>    749	                        ImmDestroyIMCC(lpIMC->hCompStr);
>    750	                        lpIMC->hCompStr = newCompStr;
> 
>    897	            newCompStr = updateCompStr(lpIMC->hCompStr, NULL, 0);
>    898	            ImmDestroyIMCC(lpIMC->hCompStr);
>    899	            lpIMC->hCompStr = newCompStr;
> 
> 



More information about the wine-devel mailing list