Kusanagi Kouichi : winex11: Destroy the handle to the composition string after it is cancelled.
aric at codeweavers.com
Fri Apr 25 14:44:00 CDT 2008
No, from updateCompStr
if (old == NULL && compstr == NULL && len == 0)
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.
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
>> 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)
>> - lpIMC->hCompStr = NULL;
>> + lpIMC->hCompStr = ImeCreateBlankCompStr();
>> myPrivate =
> 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