[GIT] ppl/ppl(master): Fixed a few memory allocation problems in ppl_pips.

Module: ppl/ppl Branch: master Commit: 2df786e330fbe20f7c268860bd791cc627d4c22a URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=2df786e330fbe...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Wed Mar 17 17:14:35 2010 +0100
Fixed a few memory allocation problems in ppl_pips. Enabled the used of valgrind when running ppl_pips tests. Corrected the expected result for test fimmel.pip (unsatisfiable problem).
---
demos/ppl_pips/Makefile.am | 21 +++++++++++++++++---- demos/ppl_pips/expected_mpz_a | 2 +- demos/ppl_pips/ppl_pips.cc | 11 ++++++----- 3 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/demos/ppl_pips/Makefile.am b/demos/ppl_pips/Makefile.am index 6d7f5d8..cfb9d17 100644 --- a/demos/ppl_pips/Makefile.am +++ b/demos/ppl_pips/Makefile.am @@ -22,6 +22,19 @@
SUBDIRS = examples
+if VALGRIND_TESTS_ENABLED + +CHECKER = \ +$(VALGRIND) --tool=memcheck -q --trace-children=yes --leak-check=yes \ +--num-callers=100 --leak-resolution=high \ +--suppressions=$(top_srcdir)/tests/valgrind_suppressions + +else !VALGRIND_TESTS_ENABLED + +CHECKER = + +endif !VALGRIND_TESTS_ENABLED + AM_CPPFLAGS = \ -I$(top_builddir) \ -I$(top_builddir)/src \ @@ -85,8 +98,8 @@ check-local: ppl_pips$(EXEEXT) $(FGREP) $$file tough_examples >/dev/null 2>&1 && continue; \ echo $(ECHO_N) $$file " $(ECHO_C)" >>obtained; \ echo ppl_pips$(EXEEXT) -p $$path; \ - ./ppl_pips$(EXEEXT) -p $$path | tr -d '\015' | $(TEXT_MD5SUM) \ - >>obtained; \ + $(CHECKER) ./ppl_pips$(EXEEXT) -p $$path \ + | tr -d '\015' | $(TEXT_MD5SUM) >>obtained; \ done for path in $(srcdir)/examples/*.pip; \ do \ @@ -94,8 +107,8 @@ check-local: ppl_pips$(EXEEXT) $(FGREP) $$file tough_examples >/dev/null 2>&1 && continue; \ echo $(ECHO_N) $$file " $(ECHO_C)" >>obtained; \ echo ppl_pips$(EXEEXT) -P $$path; \ - ./ppl_pips$(EXEEXT) -P $$path | tr -d '\015' | $(TEXT_MD5SUM) \ - >>obtained; \ + $(CHECKER) ./ppl_pips$(EXEEXT) -P $$path \ + | tr -d '\015' | $(TEXT_MD5SUM) >>obtained; \ done diff obtained $(srcdir)/$(EXPECTED)
diff --git a/demos/ppl_pips/expected_mpz_a b/demos/ppl_pips/expected_mpz_a index 70658db..96b9a87 100644 --- a/demos/ppl_pips/expected_mpz_a +++ b/demos/ppl_pips/expected_mpz_a @@ -14,7 +14,7 @@ brisebarre.pip 3051dbe7ea7bf04e8890ddd41013a9dc - cg1.pip 2571d40371dd1f1661348b08945e8a98 - esced.pip 7f4b69aed82cc0f498e7931ac1dbf92f - ex2.pip 89eb267478eb8675de9602be9bb92f9e - -fimmel.pip d41d8cd98f00b204e9800998ecf8427e - +fimmel.pip 2dd9b24df50572c15981dd3faf8c74a4 - max.pip e29c651c587cc64ab6a7a8cecd488a0b - sor1d.pip 8722a9d4eedd28b98c12987c9116564e - square.pip 65a57d1e7ccb8196f81fa6e701164b69 - diff --git a/demos/ppl_pips/ppl_pips.cc b/demos/ppl_pips/ppl_pips.cc index 223a458..1c35ab6 100644 --- a/demos/ppl_pips/ppl_pips.cc +++ b/demos/ppl_pips/ppl_pips.cc @@ -68,6 +68,7 @@ ppl_set_GMP_memory_allocation_functions(void) { #include <fstream> #include <sstream> #include <stdexcept> +#include <memory>
#ifdef PPL_HAVE_GETOPT_H #include <getopt.h> @@ -770,11 +771,11 @@ main(int argc, char* argv[]) try {
// POLYHEDRON_TYPE ph; // Representation rep = read_polyhedron(input(), ph); - PIP_Parser* parser; + std::auto_ptr<PIP_Parser> parser; if (piplib_format) - parser = new PIP_PipLib_Parser(); + parser.reset(new PIP_PipLib_Parser); else - parser = new PIP_PolyLib_Parser(); + parser.reset(new PIP_PolyLib_Parser); if (!parser->read(*input_stream_p)) return 1;
@@ -789,11 +790,11 @@ main(int argc, char* argv[]) try { parser->output_solution_tree(*output_stream_p); } else { + std::auto_ptrPPL::PIP_Problem pipp; // Perform a time benchmark loop executing the resolution several times. for (int i = 0; i < loop_iterations; ++i) { - PPL::PIP_Problem* pipp = new PPL::PIP_Problem(pip); + pipp.reset(new PPL::PIP_Problem(pip)); pipp->solve(); - delete pipp; } }
participants (1)
-
Enea Zaffanella