[voikko] rpmlint: "shared-lib-calls-exit /usr/lib64/libvoikko.so.1.9.0"
Harri Pitkänen
hatapitk at iki.fi
Wed Sep 16 16:47:21 EEST 2009
On Wednesday 16 September 2009, Ville-Pekka Vainio wrote:
> Rpmlint Fedorassa varoittaa nyt siitä, että
> morphology/malaga/basic.cpp:n malaga_throw-funktiossa kutsutaan exitiä.
> Periaatteessa "oikeaoppisempi" tapa olisi kai palauttaa jotain
> virhekoodia ylöspäin. Toisaalta en pidä tätä mitenkään vakavana asiana,
> koska sitä ennen yritetään käsitellä virhettä ja rpmlintissäkin se on
> merkitty varoitukseksi eikä virheeksi. En tunne Voikon koodia niin
> tarkkaan, että minulla olisi tähän mitään hyvää ratkaisuajatusta, mutta
> ajattelin kuitenkin ottaa asian esille. Libmalagan osalta samaa
> varoitusta ei tule, joten oletettavasti siellä on hoidettu
> virhetilanteet jotenkin muuten.
Libmalaga toimii täsmälleen samalla tavalla. Ilmeisesti rpmlint ei jostain
syystä vain osaa löytää tuota samaa virhettä sieltä.
Kieltämättä exitin kutsuminen jaetusta kirjastosta on väärin. Mutta koska tämä
on vanha malagasta peritty ongelma, en aio vielä tähän versioon tehdä asialle
mitään.
Tuo malaga_throw-funktio on muuten alkuperäisessä malagassa nimeltään throw.
Sen avulla on toteutettu eräänlainen poikkeuksiin perustuva virheiden
käsittely, jota C-kielessä ei valmiiksi ole. Koska libvoikko on C++-kielinen,
olisi oikeampi ratkaisu heittää tässä aito C++-poikkeus.
Tuo koodi muuten toimii niin, että exitiä kutsutaan vain silloin, jos virhe
tapahtuu TRY-END_TRY-käsittelyn ulkopuolella. Jos vastaavasti C++-ohjelmassa
heitettäisiin poikkeus ilman ympärillä try-catch-rakennetta, johtaisi tämäkin
ohjelman päättämiseen. Eli virheen käsittelyn muuttaminen C++-tyyliseksi ei
oikeastaan muuta mitään, vaikka se tuon varoituksen korjaakin.
Harri
More information about the voikko
mailing list