From cbfde5949482e455c5998252d9111ba95c757b98 Mon Sep 17 00:00:00 2001 From: twanvl Date: Mon, 29 Dec 2008 19:52:25 +0000 Subject: [PATCH] handle characters that have no encoding conversion in the spellchecker git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1267 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/util/spell_checker.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/util/spell_checker.cpp b/src/util/spell_checker.cpp index e3b533d1..38bac732 100644 --- a/src/util/spell_checker.cpp +++ b/src/util/spell_checker.cpp @@ -46,11 +46,22 @@ void SpellChecker::destroyAll() { // ----------------------------------------------------------------------------- : Spell checker : use bool SpellChecker::spell(const String& word) { - return Hunspell::spell(word.mb_str(encoding)); + if (word.empty()) return true; // empty word is okay + #ifdef UNICODE + wxCharBuffer str = word.mb_str(encoding); + #else + wxCharBuffer str = word.mb_str(encoding); + #endif + if (*str == '\0') { + // If encoding fails we get an empty string, since the word was not empty this can never happen + // words that can't be encoded are not in the dictionary, so they are wrong. + return false; + } + return Hunspell::spell(str); } -const String word_start = String(_("[({\"\'")) + LEFT_SINGLE_QUOTE + LEFT_DOUBLE_QUOTE; -const String word_end = String(_("])}.,;:\"\'")) + RIGHT_SINGLE_QUOTE + RIGHT_DOUBLE_QUOTE; +const String word_start = String(_("[({\"\'")) + LEFT_SINGLE_QUOTE + LEFT_DOUBLE_QUOTE; +const String word_end = String(_("])}.,;:?!\"\'")) + RIGHT_SINGLE_QUOTE + RIGHT_DOUBLE_QUOTE; bool SpellChecker::spell_with_punctuation(const String& word) { size_t first = word.find_first_not_of(word_start);