From ad404cf2576de9393c3223763274a8d2c71a01a2 Mon Sep 17 00:00:00 2001 From: skimo Date: Tue, 3 Aug 2004 17:01:29 +0000 Subject: [PATCH] memory leak --- barvinok.cc | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/barvinok.cc b/barvinok.cc index f6e2119..3a53f19 100644 --- a/barvinok.cc +++ b/barvinok.cc @@ -2688,40 +2688,37 @@ next: } } + Polyhedron *O = P; + Polyhedron *F; + evalue *EP; EP = enumerate_sure(P, exist, nparam, MaxRays); if (EP) - return EP; + goto out; EP = enumerate_sure2(P, exist, nparam, MaxRays); if (EP) - return EP; + goto out; - Polyhedron *F = unfringe(P, MaxRays); + F = unfringe(P, MaxRays); if (!PolyhedronIncludes(F, P)) { #ifdef DEBUG_ER fprintf(stderr, "\nER: Fringed\n"); #endif /* DEBUG_ER */ EP = barvinok_enumerate_e(F, exist, nparam, MaxRays); Polyhedron_Free(F); - return EP; + goto out; } Polyhedron_Free(F); - Polyhedron *O = P; if (nparam) EP = enumerate_vd(&P, exist, nparam, MaxRays); - if (EP) { - if (O != P) - Polyhedron_Free(P); - return EP; - } + if (EP) + goto out2; if (nvar != 0) { EP = enumerate_sum(P, exist, nparam, MaxRays); - if (O != P) - Polyhedron_Free(P); - return EP; + goto out2; } assert(nvar == 0); @@ -2736,11 +2733,13 @@ next: assert (i < exist); EP = enumerate_or(pos, neg, exist, nparam, MaxRays); - value_clear(f); - Vector_Free(row); +out2: if (O != P) Polyhedron_Free(P); +out: + value_clear(f); + Vector_Free(row); return EP; } -- 2.11.4.GIT