--- a/src/winime.cpp 2006-04-25 00:38:28.000000000 +0800 +++ b/src/winime.cpp 2009-10-08 12:16:52.000000000 +0800 @@ -56,10 +56,10 @@ mCandilistBufLen(0) memcpy(&mHead, mpBuf, sizeof(mHead)); int len = strlen(mHead.mCodeSet); - mpIndex1 = (char **) (mpBuf + sizeof(mHead)); - mpIndex2 = (char **) (mpBuf + sizeof(mHead) + len * sizeof(char *)); - mpText = mpBuf + sizeof(mHead) + len * sizeof(char *) + - len * len * sizeof(char *); + mpIndex1 = (int *) (mpBuf + sizeof(mHead)); + mpIndex2 = (int *) (mpBuf + sizeof(mHead) + len * sizeof(int)); + mpText = mpBuf + sizeof(mHead) + len * sizeof(int) + + len * len * sizeof(int); } WinIme::~WinIme() { @@ -246,32 +246,32 @@ int WinIme::Search(char c) { // p = *t; } else - p = mpIndex1[Index(c)]; + p = (char *)mpIndex1[Index(c)]; if (p == (char *) 0xffffffff) found = false; - p = (unsigned int) p + mpText; + p = (unsigned long) p + mpText; } //2nd level index else if (mNum == 1) { int l = strlen(mHead.mCodeSet); if (c == mHead.mWildChar) { char **t; t = - find_if(mpIndex2 + Index(mInput[0]) * l, - mpIndex2 + (Index(mInput[0]) + 1) * l, + find_if((char **)(mpIndex2 + Index(mInput[0]) * l), + (char **)(mpIndex2 + (Index(mInput[0]) + 1) * l), bind2nd(not_equal_to < char *>(), (char *) 0xffffffff)); - if (t == mpIndex2 + (Index(mInput[0]) + 1) * l) + if (t == ((char **)mpIndex2) + (Index(mInput[0]) + 1) * l) p = (char *) 0xffffffff; else p = *t; } else - p = mpIndex2[Index(mInput[0]) * l + Index(c)]; + p = (char *)(mpIndex2[Index(mInput[0]) * l + Index(c)]); if (p == (char *) 0xffffffff) found = false; - p = (unsigned int) p + mpText; + p = (unsigned long) p + mpText; } else if (mNum < mHead.mMaxCodes) { p = mpOffset[mNum - 1]; if (p == (char *) 0xffffffff) --- a/src/winime.h 2006-04-25 00:38:26.000000000 +0800 +++ b/src/winime.h 2009-10-08 12:16:52.000000000 +0800 @@ -83,8 +83,8 @@ class WinIme { char* mpOffset[12]; int mFd; char* mpBuf; - char** mpIndex1; - char** mpIndex2; + int *mpIndex1; + int *mpIndex2; char* mpText; char* mpCur; //current search position unsigned int mBufSize;