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

Side by Side Diff: chrome/browser/spellchecker.cc

Issue 7484: [chromium-reviews] Fix a potential crasher in SpellChecker Add to dictionary feature.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 2 months 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 | « no previous file | 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 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <io.h> 5 #include <io.h>
6 6
7 #include "chrome/browser/spellchecker.h" 7 #include "chrome/browser/spellchecker.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/histogram.h" 10 #include "base/histogram.h"
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 } 503 }
504 504
505 private: 505 private:
506 void Run() { 506 void Run() {
507 // Add the word with a new line. Note that, although this would mean an 507 // Add the word with a new line. Note that, although this would mean an
508 // extra line after the list of words, this is potentially harmless and 508 // extra line after the list of words, this is potentially harmless and
509 // faster, compared to verifying everytime whether to append a new line 509 // faster, compared to verifying everytime whether to append a new line
510 // or not. 510 // or not.
511 word_ += "\n"; 511 word_ += "\n";
512 FILE* f = file_util::OpenFile(file_name_, "a+"); 512 FILE* f = file_util::OpenFile(file_name_, "a+");
513 fputs(word_.c_str(), f); 513 if (f != NULL)
Patrick Johnson 2008/10/17 18:13:15 This looks like a good fix, but won't the silent f
514 fputs(word_.c_str(), f);
514 file_util::CloseFile(f); 515 file_util::CloseFile(f);
515 } 516 }
516 517
517 std::string file_name_; 518 std::string file_name_;
518 std::string word_; 519 std::string word_;
519 }; 520 };
520 521
521 void SpellChecker::AddWord(const std::wstring& word) { 522 void SpellChecker::AddWord(const std::wstring& word) {
522 // Check if the |hunspell_| has been initialized at all. 523 // Check if the |hunspell_| has been initialized at all.
523 Initialize(); 524 Initialize();
524 525
525 // Add the word to hunspell. 526 // Add the word to hunspell.
526 std::string word_to_add = WideToUTF8(word); 527 std::string word_to_add = WideToUTF8(word);
527 if (!word_to_add.empty()) 528 if (!word_to_add.empty())
528 hunspell_->put_word(word_to_add.c_str()); 529 hunspell_->put_word(word_to_add.c_str());
529 530
530 // Now add the word to the custom dictionary file in the file loop. 531 // Now add the word to the custom dictionary file in the file loop.
531 if (file_loop_) { 532 if (file_loop_) {
532 file_loop_->PostTask(FROM_HERE, new AddWordToCustomDictionaryTask( 533 file_loop_->PostTask(FROM_HERE, new AddWordToCustomDictionaryTask(
533 custom_dictionary_file_name_, word)); 534 custom_dictionary_file_name_, word));
534 } else { // just run it in this thread. 535 } else { // just run it in this thread.
535 Task* write_word_task = new AddWordToCustomDictionaryTask( 536 Task* write_word_task = new AddWordToCustomDictionaryTask(
536 custom_dictionary_file_name_, word); 537 custom_dictionary_file_name_, word);
537 write_word_task->Run(); 538 write_word_task->Run();
538 } 539 }
539 } 540 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698