Re: Urgent: Balsa crashes on send - one reason found
Peter Bloomfield <[email protected]>
| Newsgroups | gmane.comp.gnome.apps.balsa |
|---|---|
| Message-ID | <[email protected]> |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 11/20/2017 04:08:40 PM Mon, Peter Bloomfield wrote: … > With 1.6.1 installed I get what appears to be the same crash. I'm using spell-checker=internal, to avoid rebuilding gspell; the issue seems to be that enchant lists no available dictionaries, and Balsa is unprepared for handling that! > > So the immediate fix is to have Balsa gracefully disable spell-checking when no dictionaries can be found--that should be a straightforward patch. Longer term, we need to find out why 1.6.1 lists no dictionaries when 1.6.0 lists several. 1. Master has been patched to cope with a situation where no spell-checker dictionary is found. 2. One reason that Balsa finds no dictionaries when built with enchant-1.6.1 seems to be that it looks for myspell/*.dic in /usr/share/myspell/dicts, while earler versions expected them to be in /usr/share/myspell/ (or at least that's where hunspell-en-0.20140811.1-9.fc27.noarch installs them). 3. Even with the patch to master, and with a symlink "sudo ln -s /usr/share/myspell/ /usr/share/myspell/dicts" to make the dictionaries visible to enchant-1.61, I *still* get a SEGV when opening a compose window. The attached program should reproduce the crash, but, when I test it, it does some of the time and not others. So I'm quite mystified by the issue :-( Best, Peter -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQS030wPRfNNA5alz3MfX9S1uSp09QUCWht1NgAKCRAfX9S1uSp0 9ZK8AKCkvegneQBoyQjQRYHOKyKPGtf2KACfcDt+j1Dectzi0teEGlzEuovBQ8E= =tnjT -----END PGP SIGNATURE----- _______________________________________________ balsa-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/balsa-list
enchant-test.c
(text/x-csrc, 660 B)
/*
* compile with
* gcc `pkg-config --cflags --libs enchant` -o enchant-test enchant-test.c
*/
#include <stdio.h>
#include <enchant/enchant.h>
static void
broker_cb (const char * lang_tag,
const char * provider_name,
const char * provider_desc,
const char * provider_file, void * data)
{
printf ("tag \"%s\", provider \"%s\", desc \"%s\", file \"%s\"\n",
lang_tag, provider_name, provider_desc, provider_file);
}
int
main (int argc, char **argv)
{
EnchantBroker *broker;
broker = enchant_broker_init ();
enchant_broker_list_dicts (broker, broker_cb, (void *) 0);
if (argc > 1)
enchant_broker_free (broker);
return 0;
}