| Index: google.patch
|
| diff --git a/google.patch b/google.patch
|
| index 55b726bc51556a27c8c7f41440e3d16825d7ae82..d0fe969d94408d0e29af87fbfbe59696273f8f40 100644
|
| --- a/google.patch
|
| +++ b/google.patch
|
| @@ -4,7 +4,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/affixmgr.cxx,v
|
| retrieving revision 1.41
|
| diff -u -r1.41 affixmgr.cxx
|
| --- src/hunspell/affixmgr.cxx 16 Dec 2011 09:15:34 -0000 1.41
|
| -+++ src/hunspell/affixmgr.cxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/affixmgr.cxx 27 Feb 2013 01:10:35 -0000
|
| @@ -14,8 +14,14 @@
|
|
|
| #include "csutil.hxx"
|
| @@ -195,7 +195,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/affixmgr.hxx,v
|
| retrieving revision 1.15
|
| diff -u -r1.15 affixmgr.hxx
|
| --- src/hunspell/affixmgr.hxx 13 Oct 2011 13:41:54 -0000 1.15
|
| -+++ src/hunspell/affixmgr.hxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/affixmgr.hxx 27 Feb 2013 01:10:35 -0000
|
| @@ -18,6 +18,40 @@
|
| class PfxEntry;
|
| class SfxEntry;
|
| @@ -280,7 +280,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/filemgr.cxx,v
|
| retrieving revision 1.5
|
| diff -u -r1.5 filemgr.cxx
|
| --- src/hunspell/filemgr.cxx 23 Jun 2011 09:21:50 -0000 1.5
|
| -+++ src/hunspell/filemgr.cxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/filemgr.cxx 27 Feb 2013 01:10:35 -0000
|
| @@ -7,6 +7,32 @@
|
|
|
| #include "filemgr.hxx"
|
| @@ -325,7 +325,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/filemgr.hxx,v
|
| retrieving revision 1.3
|
| diff -u -r1.3 filemgr.hxx
|
| --- src/hunspell/filemgr.hxx 15 Apr 2010 11:22:08 -0000 1.3
|
| -+++ src/hunspell/filemgr.hxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/filemgr.hxx 27 Feb 2013 01:10:35 -0000
|
| @@ -7,6 +7,30 @@
|
| #include "hunzip.hxx"
|
| #include <stdio.h>
|
| @@ -368,7 +368,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/hashmgr.cxx,v
|
| retrieving revision 1.12
|
| diff -u -r1.12 hashmgr.cxx
|
| --- src/hunspell/hashmgr.cxx 23 Jun 2011 09:21:50 -0000 1.12
|
| -+++ src/hunspell/hashmgr.cxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/hashmgr.cxx 27 Feb 2013 01:10:35 -0000
|
| @@ -12,8 +12,14 @@
|
|
|
| // build a hash table from a munched word list
|
| @@ -738,7 +738,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/hashmgr.hxx,v
|
| retrieving revision 1.3
|
| diff -u -r1.3 hashmgr.hxx
|
| --- src/hunspell/hashmgr.hxx 15 Apr 2010 11:22:08 -0000 1.3
|
| -+++ src/hunspell/hashmgr.hxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/hashmgr.hxx 27 Feb 2013 01:10:35 -0000
|
| @@ -8,10 +8,25 @@
|
| #include "htypes.hxx"
|
| #include "filemgr.hxx"
|
| @@ -836,7 +836,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/htypes.hxx,v
|
| retrieving revision 1.3
|
| diff -u -r1.3 htypes.hxx
|
| --- src/hunspell/htypes.hxx 6 Sep 2010 07:58:53 -0000 1.3
|
| -+++ src/hunspell/htypes.hxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/htypes.hxx 27 Feb 2013 01:10:35 -0000
|
| @@ -1,6 +1,16 @@
|
| #ifndef _HTYPES_HXX_
|
| #define _HTYPES_HXX_
|
| @@ -860,7 +860,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/hunspell.cxx,v
|
| retrieving revision 1.29
|
| diff -u -r1.29 hunspell.cxx
|
| --- src/hunspell/hunspell.cxx 23 Jun 2011 09:21:50 -0000 1.29
|
| -+++ src/hunspell/hunspell.cxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/hunspell.cxx 27 Feb 2013 01:10:35 -0000
|
| @@ -7,20 +7,37 @@
|
|
|
| #include "hunspell.hxx"
|
| @@ -1006,7 +1006,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/hunspell.hxx,v
|
| retrieving revision 1.6
|
| diff -u -r1.6 hunspell.hxx
|
| --- src/hunspell/hunspell.hxx 21 Jan 2011 17:30:41 -0000 1.6
|
| -+++ src/hunspell/hunspell.hxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/hunspell.hxx 27 Feb 2013 01:10:35 -0000
|
| @@ -5,6 +5,10 @@
|
| #include "suggestmgr.hxx"
|
| #include "langnum.hxx"
|
| @@ -1063,7 +1063,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/replist.hxx,v
|
| retrieving revision 1.2
|
| diff -u -r1.2 replist.hxx
|
| --- src/hunspell/replist.hxx 15 Apr 2010 11:22:09 -0000 1.2
|
| -+++ src/hunspell/replist.hxx 8 Jan 2013 00:30:25 -0000
|
| ++++ src/hunspell/replist.hxx 27 Feb 2013 01:10:35 -0000
|
| @@ -2,6 +2,12 @@
|
| #ifndef _REPLIST_HXX_
|
| #define _REPLIST_HXX_
|
| @@ -1083,8 +1083,8 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/suggestmgr.cxx,v
|
| retrieving revision 1.24
|
| diff -u -r1.24 suggestmgr.cxx
|
| --- src/hunspell/suggestmgr.cxx 14 Feb 2011 21:47:24 -0000 1.24
|
| -+++ src/hunspell/suggestmgr.cxx 8 Jan 2013 00:30:26 -0000
|
| -@@ -12,9 +12,110 @@
|
| ++++ src/hunspell/suggestmgr.cxx 27 Feb 2013 01:10:36 -0000
|
| +@@ -12,9 +12,114 @@
|
|
|
| const w_char W_VLINE = { '\0', '|' };
|
|
|
| @@ -1130,24 +1130,25 @@ diff -u -r1.24 suggestmgr.cxx
|
| + // it can store affix flags into 'h->astr[0]',...,'h->astr[alen-1]'. To handle
|
| + // this new hentry struct, we define a struct which combines three values: an
|
| + // hentry struct 'hentry'; a char array 'word[kMaxWordLen]', and; an unsigned
|
| -+ // short value 'astr' so a hentry struct 'h' returned from
|
| ++ // short array 'astr' so a hentry struct 'h' returned from
|
| + // CreateScopedHashEntry() satisfies the following equations:
|
| + // hentry* h = factory.CreateScopedHashEntry(0, source);
|
| + // h->word[0] == ((HashEntryItem*)h)->entry.word[0].
|
| + // h->word[1] == ((HashEntryItem*)h)->word[0].
|
| + // ...
|
| + // h->word[h->blen] == ((HashEntryItem*)h)->word[h->blen-1].
|
| -+ // h->astr[0] == ((HashEntryItem*)h)->astr.
|
| -+ // Our BDICT does not use affix flags longer than one for now since they are
|
| -+ // discarded by convert_dict, i.e. 'h->astr' is always <= 1. Therefore, this
|
| -+ // struct does not use an array for 'astr'.
|
| ++ // h->astr[0] == ((HashEntryItem*)h)->astr[0].
|
| ++ // h->astr[1] == ((HashEntryItem*)h)->astr[1].
|
| ++ // ...
|
| ++ // h->astr[h->alen-1] == ((HashEntryItem*)h)->astr[h->alen-1].
|
| + enum {
|
| + kMaxWordLen = 128,
|
| ++ kMaxAffixLen = 8,
|
| + };
|
| + struct HashEntryItem {
|
| + hentry entry;
|
| + char word[kMaxWordLen];
|
| -+ unsigned short astr;
|
| ++ unsigned short astr[kMaxAffixLen];
|
| + };
|
| +
|
| + HashEntryItem hash_items_[MAX_ROOTS];
|
| @@ -1162,7 +1163,7 @@ diff -u -r1.24 suggestmgr.cxx
|
| +
|
| +hentry* ScopedHashEntryFactory::CreateScopedHashEntry(int index,
|
| + const hentry* source) {
|
| -+ if (index >= MAX_ROOTS || source->blen >= kMaxWordLen || source->alen > 1)
|
| ++ if (index >= MAX_ROOTS || source->blen >= kMaxWordLen)
|
| + return NULL;
|
| +
|
| + // Retrieve a HashEntryItem struct from our spool, initialize it, and
|
| @@ -1171,8 +1172,11 @@ diff -u -r1.24 suggestmgr.cxx
|
| + HashEntryItem* hash_item = &hash_items_[index];
|
| + memcpy(&hash_item->entry, source, source_size);
|
| + if (source->astr) {
|
| -+ hash_item->astr = *source->astr;
|
| -+ hash_item->entry.astr = &hash_item->astr;
|
| ++ hash_item->entry.alen = source->alen;
|
| ++ if (hash_item->entry.alen > kMaxAffixLen)
|
| ++ hash_item->entry.alen = kMaxAffixLen;
|
| ++ memcpy(hash_item->astr, source->astr, hash_item->entry.alen * sizeof(hash_item->astr[0]));
|
| ++ hash_item->entry.astr = &hash_item->astr[0];
|
| + }
|
| + return &hash_item->entry;
|
| +}
|
| @@ -1195,7 +1199,7 @@ diff -u -r1.24 suggestmgr.cxx
|
|
|
| // register affix manager and check in string of chars to
|
| // try when building candidate suggestions
|
| -@@ -407,6 +508,49 @@
|
| +@@ -407,6 +512,49 @@
|
| int lenr, lenp;
|
| int wl = strlen(word);
|
| if (wl < 2 || ! pAMgr) return ns;
|
| @@ -1245,7 +1249,7 @@ diff -u -r1.24 suggestmgr.cxx
|
| int numrep = pAMgr->get_numrep();
|
| struct replentry* reptable = pAMgr->get_reptable();
|
| if (reptable==NULL) return ns;
|
| -@@ -448,6 +592,7 @@
|
| +@@ -448,6 +596,7 @@
|
| r++; // search for the next letter
|
| }
|
| }
|
| @@ -1253,7 +1257,7 @@ diff -u -r1.24 suggestmgr.cxx
|
| return ns;
|
| }
|
|
|
| -@@ -678,7 +823,9 @@
|
| +@@ -678,7 +827,9 @@
|
| // error is missing a letter it needs
|
| int SuggestMgr::forgotchar(char ** wlst, const char * word, int ns, int cpdsuggest)
|
| {
|
| @@ -1264,7 +1268,7 @@ diff -u -r1.24 suggestmgr.cxx
|
| char * p;
|
| clock_t timelimit = clock();
|
| int timer = MINTIMER;
|
| -@@ -700,8 +847,10 @@
|
| +@@ -700,8 +851,10 @@
|
| // error is missing a letter it needs
|
| int SuggestMgr::forgotchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
|
| {
|
| @@ -1277,7 +1281,7 @@ diff -u -r1.24 suggestmgr.cxx
|
| w_char * p;
|
| clock_t timelimit = clock();
|
| int timer = MINTIMER;
|
| -@@ -1057,6 +1206,9 @@
|
| +@@ -1057,6 +1210,9 @@
|
|
|
| struct hentry* hp = NULL;
|
| int col = -1;
|
| @@ -1287,7 +1291,7 @@ diff -u -r1.24 suggestmgr.cxx
|
| phonetable * ph = (pAMgr) ? pAMgr->get_phonetable() : NULL;
|
| char target[MAXSWUTF8L];
|
| char candidate[MAXSWUTF8L];
|
| -@@ -1115,7 +1267,11 @@
|
| +@@ -1115,7 +1271,11 @@
|
|
|
| if (sc > scores[lp]) {
|
| scores[lp] = sc;
|
| @@ -1305,7 +1309,7 @@ RCS file: /cvsroot/hunspell/hunspell/src/hunspell/suggestmgr.hxx,v
|
| retrieving revision 1.5
|
| diff -u -r1.5 suggestmgr.hxx
|
| --- src/hunspell/suggestmgr.hxx 21 Jan 2011 22:10:24 -0000 1.5
|
| -+++ src/hunspell/suggestmgr.hxx 8 Jan 2013 00:30:26 -0000
|
| ++++ src/hunspell/suggestmgr.hxx 27 Feb 2013 01:10:36 -0000
|
| @@ -52,7 +52,11 @@
|
|
|
|
|
|
|