Ignore:
Timestamp:
11/08/11 10:47:14 (8 years ago)
Author:
paulbarber
Message:

Fixed some memory leaks and some compile warnings.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/slim-curve/src/main/c/EcfGlobal.c

    r7781 r7803  
    467467                default: 
    468468                        dbgprintf(1, "global_exps_instr: please update me!\n"); 
     469                        GCI_ecf_free_matrix(covar); 
     470                        GCI_ecf_free_matrix(alpha); 
     471                        free(scaled_instr); 
     472                        free(exp_conv[0]); 
    469473                        return -1; 
    470474        } 
     
    599603        ret = GCI_triple_integral_fitting_engine(xincr, summed, data_start, fit_end, 
    600604                                                                                        instr, ninstr, noise, sig, 
    601                                                                                         &Z, &A, &tau, NULL, NULL, NULL, 1.5*(fit_end-fit_start-3)); 
     605                                                                                        &Z, &A, &tau, NULL, NULL, NULL, (float)1.5*(fit_end-fit_start-3)); 
    602606 
    603607        dbgprintf(3, "In est_globals_instr, triple integral ret = %d\n", ret); 
     
    738742                                                          gparam, paramfree, nparam, restrain, fitfunc, 
    739743                                                          fitted, residuals, chisq_global, covar, alpha, 
    740                                                           NULL, 1.5*(fit_end-fit_start-nparamfree), chisq_delta, 0); 
     744                                                          NULL, (float)1.5*(fit_end-fit_start-nparamfree), chisq_delta, 0); 
    741745 
    742746        dbgprintf(3, "In est_globals_instr, marquardt ret = %d\n", ret); 
     
    801805                ret = GCI_triple_integral_fitting_engine(xincr, trans[i], data_start, fit_end, 
    802806                                                                                        instr, ninstr, noise, sig, 
    803                                                                                         &Z, &A, &tau, NULL, NULL, NULL, 1.5*(fit_end-fit_start-3)); 
     807                                                                                        &Z, &A, &tau, NULL, NULL, NULL, (float)1.5*(fit_end-fit_start-3)); 
    804808                if (ret < 0) { 
    805809                        Z = 0; 
     
    17741778                                } 
    17751779                        } 
    1776                         if (*chisq <= 0.0) *chisq = 1.0e308; // don't let chisq=0 through yfit being all -ve 
     1780                        if (*chisq <= 0.0) *chisq = 1.0e38; // don't let chisq=0 through yfit being all -ve 
    17771781                        break; 
    17781782 
     
    18881892                                } 
    18891893                        } 
    1890                         if (*chisq <= 0.0) *chisq = 1.0e308; // don't let chisq=0 through yfit being all -ve 
     1894                        if (*chisq <= 0.0) *chisq = 1.0e38; // don't let chisq=0 through yfit being all -ve 
    18911895                        break; 
    18921896 
     
    20482052                k++; 
    20492053                if (k > MAXITERS) { 
     2054                        free(ochisq_trans); 
    20502055                        return -2; 
    20512056                } 
     
    27302735        for (i=0, instrsum=0; i<ninstr; i++) 
    27312736                instrsum += instr[i]; 
    2732         if (instrsum == 0) return -6; 
     2737        if (instrsum == 0) { 
     2738                GCI_ecf_free_matrix(covar); 
     2739                GCI_ecf_free_matrix(alpha); 
     2740                free(scaled_instr); 
     2741                return -6; 
     2742        } 
     2743         
    27332744        for (i=0; i<ninstr; i++) 
    27342745                scaled_instr[i] = instr[i] / instrsum; 
     
    27492760        if (ret < 0) { 
    27502761                dbgprintf(1, "Fit failed, ret = %d\n", ret); 
     2762                GCI_ecf_free_matrix(covar); 
     2763                GCI_ecf_free_matrix(alpha); 
     2764                free(scaled_instr); 
    27512765                return -10 + ret; 
    27522766        } 
     
    27682782 
    27692783        *df = ntrans * ((fit_end - fit_start) - mlocal) - mglobal; 
     2784 
     2785        GCI_ecf_free_matrix(covar); 
     2786        GCI_ecf_free_matrix(alpha); 
     2787        free(scaled_instr); 
    27702788 
    27712789        return ret; 
     
    28632881                k++; 
    28642882                if (k > MAXITERS) { 
     2883                        free(ochisq_trans); 
    28652884                        return -2; 
    28662885                } 
Note: See TracChangeset for help on using the changeset viewer.