V článku
GtkSpell a čeština - fungovalo to vůbec někdy? jsem popisoval chybu, která se týkala kontroly pravopisu při použití knihoven GtkSpell. Chyba spočívala v nesprávném ošetření chybného zadání identifikace jazyka do proměnné LANG.
Dne 18.2.2009 došlo k opravě této chyby ve zdrojovém kódu gtkspell.c ve verzi 1.30. Oprava byla identifikovaná textem:
"Fix Bug #2431005 In some cases is default language for spelling is set to EN (Blondak)" Opravená část zdrojového kódu vypadá následovně:
if (lang == NULL) {
lang = g_getenv("LANG");
if (lang) {
if ((g_strcmp0(lang, "C") == 0) || (g_strcmp0(lang, "c") == 0))
lang = NULL;
else if (lang[0] == 0)
lang = NULL;
}
}
Bohužel dodnes nebyla oprava zanesena do aktualizačních balíčků knihovny GtkSpell v distribuci
Fedora 10 (Cambridge). Nejspíš si budeme muset počkat do vydání nové distribuce Fedora 11 (Leonidas), která naštěstí vyjde za necelých 14 dnů - 26.5.2009.
Na konci minulého článku, který popisoval tuto chybu, jsem navrhl dočasné nouzové řešení. To spočívalo v přímém zásahu do binárního kódu knihovny. Místo opravy jsem určil trochu nešťastně hexadecimální adresou, která však byla platná pouze pro verzi knihovny k příslušnému datu. Od té doby došlo k aktualizaci knihovny a tím pádem i ke změně adresy. Navíc adresa byla platná pouze pro balíčky distribuce Fedora. Ve vláknu "
Nefunguje kontrola pravopisu v Pidgin, Tomboy" fóra k distribuci Ubuntu bylo místo opravy specifikováno precizněji a to slovy:
musí to být řetězec "C" a musí mu bezprostředně předcházet řetězec "LANG".
Je vidět, že chybou nebyla postižena jenom distribuce Fedora, ale i Ubuntu a všechny ostatní, které používají knihovnu GtkSpell.
Trochu mne v této souvislosti zaráží doba potřebná pro opravu této malé chyby. Já sám jsem chybu ohlásil e-mailem jednomu z autorů této knihovny dne 29.11.2008. Asi to nebylo to nejsprávnější řešení, protože e-mail nejspíš někde zapadl. Dne 15.12.2008 však byla tato chyba
zahrnuta mezi bugy uživatelem "blondak" včetně patche pro její opravu a až dne 18.2.2009 došlo k aplikaci patche. Nicméně dodnes se tato oprava neobjevila mezi aktualizacemi v příslušných distribucích.