summarylogtreecommitdiffstats
path: root/winime.amd64.patch
blob: b0ac3c2008ab582737bce206b79508eb489ca540 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
--- 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;