[voikko] libvoikko 2.2.2rc1 (oli: voikkospell: Segmentation fault)
Harri Pitkänen
hatapitk at iki.fi
Fri Oct 30 20:02:13 EET 2009
On Friday 30 October 2009, Teemu Likonen wrote:
> Teemu Likonen kirjoitti 30.10.2009 klo 12.32:
> > Kun voikkospell-ohjelmalle tarjoaa alla olevan merkkijonon, se sanoo
> > "Segmentation fault".
>
> Taisin löytää täsmällisemmän logiikan kaatumiseen. Libvoikko taitaa
> hylätä merkkijonot, jotka ovat pituudeltaan 256 tavua tai enemmän.
> Segfault tulee silloin, kun merkkijono pituus on _merkkeinä_ laskettuna
> alle tuon rajan mutta _tavuina_ yli.
Juuri tästä oli kyse. En tosin tiedä, miten ongelma olisi syntynyt juuri
revisioiden 2821 ja 2822 välillä, mutta on melko uskottavaa, että noihin
aikoihin se on tapahtunut.
Bugi itsessään on vanha. Merkistökoodausmuunnoksessa icon-kutsua varten
varattiin puskuri, joka kyllä oli riittävän suuri, mutta iconville väitettiin
sen olevan vain 255 tavua pitkä. Tällöin yli 255 tavua UTF-8-koodattuna
olevien merkkijonojen muunnos jäi kesken. Aikaisemmin kuitenkin aiemmat
tarkistukset ovat estäneet tällaisten merkkijonojen pääsemisen edes näin
pitkälle.
Päätin julkaista uuden version libvoikosta ongelman korjaamiseksi. On
kuitenkin huomattava, että käytännössä bugi ei koske ohjelmia, jotka käyttävät
libvoikon cstr-funktioita UTF-8-merkistöllä. Näissä merkkijonon pituus
tarkistetaan jo aikaisemmin tavuina syötteenä saadusta UTF-8-esityksestä.
Openoffice.org-voikko, mozvoikko, tmispell ja enchant toimivat kaikki näin,
joten bugi on lähinnä merkityksellinen niille, jotka ovat käyttäneet
libvoikkoa, sen mukana tulevia testiohjelmia tai Python-rajapintaa omissa
sovelluksissaan.
Bugi on korjattu versiossa 2.2.2rc1, joka löytyy täältä:
http://www.puimula.org/htp/testing/libvoikko-2.2.2rc1.tar.gz
Aion julkaista tuon joskus ensi viikolla, mutta odotan kuitenkin muutaman
päivän, jos joku haluaa vielä sitä testailla.
Harri
More information about the voikko
mailing list