Page 1 sur 1

memory leak dans gen.cc invmod

Publié : mer. juil. 23, 2014 1:12 am
par jlaurens
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...

Re: memory leak dans gen.cc invmod

Publié : mer. juil. 23, 2014 6:57 am
par parisse
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.