pátek 15. května 2009

Nefunguje kontrola pravopisu v Pidgin, Tomboy - knihovna GtkSpell

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.