[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/jinx d7c2af7f0b 3/3: Avoid error if enchant_dict_get_ex
From: |
ELPA Syncer |
Subject: |
[elpa] externals/jinx d7c2af7f0b 3/3: Avoid error if enchant_dict_get_extra_word_characters does not return UTF-8 |
Date: |
Mon, 27 Mar 2023 05:58:08 -0400 (EDT) |
branch: externals/jinx
commit d7c2af7f0be5217d6374069b57d9c802020aad76
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Avoid error if enchant_dict_get_extra_word_characters does not return UTF-8
This is a bug in Enchant fixed in version 2.3.1. See #5.
---
CHANGELOG.org | 1 +
jinx-mod.c | 12 +++++++++---
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index a4832d2410..d05d42b3ca 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -6,6 +6,7 @@
- =jinx-languages=: Fall back to =$LANG= environment variable, since
=current-locale-environment= is an Emacs 29 addition.
+- =jinx--mod-wordchars=: Handle non-UTF8 return values gracefully.
* Version 0.3 (2023-03-27)
diff --git a/jinx-mod.c b/jinx-mod.c
index 1374ee876e..69d1958fc8 100644
--- a/jinx-mod.c
+++ b/jinx-mod.c
@@ -122,9 +122,15 @@ static emacs_value jinx_add(emacs_env* env, ptrdiff_t
jinx_unused(nargs),
static emacs_value jinx_wordchars(emacs_env* env, ptrdiff_t jinx_unused(nargs),
emacs_value args[], void* jinx_unused(data))
{
EnchantDict* dict = env->get_user_ptr(env, args[0]);
- return dict
- ? jinx_str(env, enchant_dict_get_extra_word_characters(dict))
- : env->intern(env, "nil");
+ if (dict) {
+ // Enchant older than 2.3.1 sometimes does not return UTF-8
+ // See https://github.com/AbiWord/enchant/blob/master/NEWS
+ emacs_value str = jinx_str(env,
enchant_dict_get_extra_word_characters(dict));
+ if (env->non_local_exit_check(env) == emacs_funcall_exit_return)
+ return str;
+ env->non_local_exit_clear(env);
+ }
+ return env->intern(env, "nil");
}
static emacs_value jinx_suggest(emacs_env* env, ptrdiff_t jinx_unused(nargs),