| diff --git a/src/winime.cpp b/src/winime.cpp |
| index 0c52393..85729a3 100644 |
| --- a/src/winime.cpp |
| +++ b/src/winime.cpp |
| @@ -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,33 @@ 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)]; |
| + } else { |
| + int dd = 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) |
| diff --git a/src/winime.h b/src/winime.h |
| index c2f51ab..816a270 100644 |
| --- a/src/winime.h |
| +++ b/src/winime.h |
| @@ -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; |