memory leak dans gen.cc invmod

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

jlaurens
Messages : 16
Inscription : jeu. juil. 03, 2014 10:23 am

memory leak dans gen.cc invmod

Message par jlaurens » mer. juil. 23, 2014 1:12 am

Il manque un delete res...

gen invmod(const gen & a,const gen & modulo){
[...]
ref_mpz_t * res;
[...]
if (!_ZINTinvmod(a,modulo,res)) <<<<<<<<<<<<<<<< execute un new res
return gentypeerr(gettext("invmod")); <<<<<<<<<<<<<< pas de delete res
return(res); <<<<<<<<< delete res ici, il vaudrait mieux avoir return gen(res);
[...]
return 0;
}

Par ailleurs, dans _ZINTinvmod, il y a des memory leaks potentiels si une exception est envoyée
notamment par new ref_mpz_t...

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: memory leak dans gen.cc invmod

Message par parisse » mer. juil. 23, 2014 6:57 am

Je vais rajouter delete res; et res=0; dans _ZINTinvmod lorsqu'il renvoie false.
Sinon, oui, si new echoue, mais de toutes facons, si new ou malloc echoue ou que ce soit, il n'y a rien qui soit capable de le traiter correctement, il faudrait relire partout.

Répondre