From noreply at r-forge.r-project.org Thu Feb 13 18:28:49 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Thu, 13 Feb 2014 18:28:49 +0100 (CET) Subject: [Deoptim-commits] r115 - pkg/DEoptim/src Message-ID: <20140213172849.E267C186E65@r-forge.r-project.org> Author: bodanker Date: 2014-02-13 18:28:49 +0100 (Thu, 13 Feb 2014) New Revision: 115 Modified: pkg/DEoptim/src/de4_0.c Log: - fix potential un/protect mis-match Modified: pkg/DEoptim/src/de4_0.c =================================================================== --- pkg/DEoptim/src/de4_0.c 2013-08-14 12:15:24 UTC (rev 114) +++ pkg/DEoptim/src/de4_0.c 2014-02-13 17:28:49 UTC (rev 115) @@ -108,8 +108,8 @@ double *gd_bestvalit = REAL(sexp_bestvalit); /* ensure lower and upper are double */ - if(TYPEOF(lower) != REALSXP) PROTECT(lower = coerceVector(lower, REALSXP)); P++; - if(TYPEOF(upper) != REALSXP) PROTECT(upper = coerceVector(upper, REALSXP)); P++; + if(TYPEOF(lower) != REALSXP) {PROTECT(lower = coerceVector(lower, REALSXP)); P++;} + if(TYPEOF(upper) != REALSXP) {PROTECT(upper = coerceVector(upper, REALSXP)); P++;} double *d_lower = REAL(lower); double *d_upper = REAL(upper); From noreply at r-forge.r-project.org Fri Feb 14 14:36:39 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Fri, 14 Feb 2014 14:36:39 +0100 (CET) Subject: [Deoptim-commits] r116 - pkg/DEoptim/src Message-ID: <20140214133639.EFA15186ED7@r-forge.r-project.org> Author: bodanker Date: 2014-02-14 14:36:39 +0100 (Fri, 14 Feb 2014) New Revision: 116 Modified: pkg/DEoptim/src/de4_0.c Log: - fix another potential un/protect mis-match (for sexp_t_tmpC this time) Modified: pkg/DEoptim/src/de4_0.c =================================================================== --- pkg/DEoptim/src/de4_0.c 2014-02-13 17:28:49 UTC (rev 115) +++ pkg/DEoptim/src/de4_0.c 2014-02-14 13:36:39 UTC (rev 116) @@ -423,7 +423,6 @@ /*------Trial mutation now in t_tmpP-----------------*/ /* evaluate mutated population */ - if(i_iter > 1) UNPROTECT(1); // previous iteration's sexp_t_tmpC PROTECT(sexp_map_pop = popEvaluate(l_nfeval, sexp_t_tmpP, fnMap, rho, 0)); memmove(REAL(sexp_t_tmpP), REAL(sexp_map_pop), i_NP * i_D * sizeof(double)); // valgrind reports memory overlap here UNPROTECT(1); // sexp_map_pop @@ -458,6 +457,7 @@ } } /* End mutation loop through ensemble */ + UNPROTECT(1); // sexp_t_tmpC if (d_c > 0) { /* calculate new meanCR and meanF */ meanCR = (1-d_c)*meanCR + d_c*goodCR; @@ -555,7 +555,7 @@ *gt_bestC = t_bestC; PutRNGstate(); - UNPROTECT(P+1); // +1 is for last iteration's sexp_t_tmpC + UNPROTECT(P); }