Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: src/hunspell/hashmgr.cxx

Issue 8574050: Remove 1 exit time destructor from our local changes to hunspell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/hunspell/
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « google.patch ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "license.hunspell" 1 #include "license.hunspell"
2 #include "license.myspell" 2 #include "license.myspell"
3 3
4 #include <stdlib.h> 4 #include <stdlib.h>
5 #include <string.h> 5 #include <string.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <ctype.h> 7 #include <ctype.h>
8 8
9 #include "hashmgr.hxx" 9 #include "hashmgr.hxx"
10 #include "csutil.hxx" 10 #include "csutil.hxx"
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 struct hentry * HashMgr::walk_hashtable(int &col, struct hentry * hp) const 409 struct hentry * HashMgr::walk_hashtable(int &col, struct hentry * hp) const
410 { 410 {
411 #ifdef HUNSPELL_CHROME_CLIENT 411 #ifdef HUNSPELL_CHROME_CLIENT
412 // Return NULL if dictionary is not valid. 412 // Return NULL if dictionary is not valid.
413 if (!bdict_reader->IsValid()) 413 if (!bdict_reader->IsValid())
414 return NULL; 414 return NULL;
415 415
416 // This function is only ever called by one place and not nested. We can 416 // This function is only ever called by one place and not nested. We can
417 // therefore keep static state between calls and use |col| as a "reset" flag 417 // therefore keep static state between calls and use |col| as a "reset" flag
418 // to avoid changing the API. It is set to -1 for the first call. 418 // to avoid changing the API. It is set to -1 for the first call.
419 static hunspell::WordIterator word_iterator = 419 // Allocate the iterator on the heap to prevent an exit time destructor.
420 bdict_reader->GetAllWordIterator(); 420 static hunspell::WordIterator& word_iterator =
421 *new hunspell::WordIterator(bdict_reader->GetAllWordIterator());
421 if (col < 0) { 422 if (col < 0) {
422 col = 1; 423 col = 1;
423 word_iterator = bdict_reader->GetAllWordIterator(); 424 word_iterator = bdict_reader->GetAllWordIterator();
424 } 425 }
425 426
426 int affix_ids[hunspell::BDict::MAX_AFFIXES_PER_WORD]; 427 int affix_ids[hunspell::BDict::MAX_AFFIXES_PER_WORD];
427 static const int kMaxWordLen = 128; 428 static const int kMaxWordLen = 128;
428 static char word[kMaxWordLen]; 429 static char word[kMaxWordLen];
429 int affix_count = word_iterator.Advance(word, kMaxWordLen, affix_ids); 430 int affix_count = word_iterator.Advance(word, kMaxWordLen, affix_ids);
430 if (affix_count == 0) 431 if (affix_count == 0)
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 1153
1153 int HashMgr::is_aliasm() { 1154 int HashMgr::is_aliasm() {
1154 return (aliasm != NULL); 1155 return (aliasm != NULL);
1155 } 1156 }
1156 1157
1157 char * HashMgr::get_aliasm(int index) { 1158 char * HashMgr::get_aliasm(int index) {
1158 if ((index > 0) && (index <= numaliasm)) return aliasm[index - 1]; 1159 if ((index > 0) && (index <= numaliasm)) return aliasm[index - 1];
1159 HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index); 1160 HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index);
1160 return NULL; 1161 return NULL;
1161 } 1162 }
OLDNEW
« no previous file with comments | « google.patch ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698