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;