From: Richard Kreckel Date: Mon, 19 Feb 2001 14:19:01 +0000 (+0000) Subject: Fix two leaks in class pseries, where zero terms could have been created. X-Git-Tag: release_0-7-3~15 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=e06e88a2514d3a5c8423375973ea8209bf421914 Fix two leaks in class pseries, where zero terms could have been created. --- diff --git a/ginac/normal.cpp b/ginac/normal.cpp index 6d0bdbd5..0832688d 100644 --- a/ginac/normal.cpp +++ b/ginac/normal.cpp @@ -2060,15 +2060,13 @@ ex power::normal(lst &sym_lst, lst &repl_lst, int level) const * @see ex::normal */ ex pseries::normal(lst &sym_lst, lst &repl_lst, int level) const { - epvector new_seq; - new_seq.reserve(seq.size()); - - epvector::const_iterator it = seq.begin(), itend = seq.end(); - while (it != itend) { - new_seq.push_back(expair(it->rest.normal(), it->coeff)); - it++; + epvector newseq; + for (epvector::const_iterator i=seq.begin(); i!=seq.end(); ++i) { + ex restexp = i->rest.normal(); + if (!restexp.is_zero()) + newseq.push_back(expair(restexp, i->coeff)); } - ex n = pseries(relational(var,point), new_seq); + ex n = pseries(relational(var,point), newseq); return (new lst(replace_with_symbol(n, sym_lst, repl_lst), _ex1()))->setflag(status_flags::dynallocated); } diff --git a/ginac/pseries.cpp b/ginac/pseries.cpp index 409947f4..78986b4d 100644 --- a/ginac/pseries.cpp +++ b/ginac/pseries.cpp @@ -416,7 +416,6 @@ ex pseries::subs(const lst & ls, const lst & lr) const ex pseries::expand(unsigned options) const { epvector newseq; - newseq.reserve(seq.size()); for (epvector::const_iterator i=seq.begin(); i!=seq.end(); ++i) { ex restexp = i->rest.expand(); if (!restexp.is_zero())