IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7753


Ignore:
Timestamp:
Jun 29, 2006, 10:37:51 AM (20 years ago)
Author:
magnier
Message:

fixed memory leak in psVectorFitPolynomial1D

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/math/psMinimizePolyFit.c

    r7135 r7753  
    1010 *  @author EAM, IfA
    1111 *
    12  *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
    13  *  @date $Date: 2006-05-18 03:05:47 $
     12 *  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
     13 *  @date $Date: 2006-06-29 20:37:51 $
    1414 *
    1515 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    686686    }
    687687
    688     if (f->type.type != PS_TYPE_F64) {
    689         f64 = psVectorCopy(NULL, f, PS_TYPE_F64);
    690     } else {
    691         f64 = (psVector *) f;
    692     }
     688    f64 = (f->type.type == PS_TYPE_F64) ? (psVector *) f : psVectorCopy(NULL, f, PS_TYPE_F64);
    693689
    694690    if (x != NULL) {
    695         if (x->type.type != PS_TYPE_F64) {
    696             x64 = psVectorCopy(NULL, x, PS_TYPE_F64);
    697         } else {
    698             x64 = (psVector *) x;
    699         }
     691        x64 = (x->type.type == PS_TYPE_F64) ? (psVector *) x : psVectorCopy(NULL, x, PS_TYPE_F64);
    700692    }
    701693
    702694    if (fErr != NULL) {
    703         if (fErr->type.type != PS_TYPE_F64) {
    704             fErr64 = psVectorCopy(NULL, fErr, PS_TYPE_F64);
    705         } else {
    706             fErr64 = (psVector *) fErr;
    707         }
    708     }
    709 
    710     if (poly->type == PS_POLYNOMIAL_ORD) {
     695        fErr64 = (fErr->type.type == PS_TYPE_F64) ? (psVector *) fErr : psVectorCopy(NULL, fErr, PS_TYPE_F64);
     696    }
     697
     698    switch (poly->type) {
     699    case PS_POLYNOMIAL_ORD:
    711700        poly = VectorFitPolynomial1DOrd(poly, mask, maskValue, f64, fErr64, x64);
    712701        if (poly == NULL) {
    713702            psError(PS_ERR_UNKNOWN, false, "Could not fit polynomial.  Returning NULL.\n");
    714             return(NULL);
    715         }
    716     } else if (poly->type == PS_POLYNOMIAL_CHEB) {
     703        }
     704        break;
     705    case PS_POLYNOMIAL_CHEB:
    717706        if (mask != NULL) {
    718707            //            psLogMsg(__func__, PS_LOG_WARN, "WARNING: ignoring mask and maskValue with Chebyshev polynomials.\n");
     
    731720            psFree(x64);
    732721        }
    733     } else {
     722        break;
     723    default:
    734724        psError(PS_ERR_UNKNOWN, true, "Incorrect polynomial type (%d).  Returning NULL.\n", poly->type);
    735725        poly = NULL;
     726        break;
    736727    }
    737728
Note: See TracChangeset for help on using the changeset viewer.