IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 689


Ignore:
Timestamp:
May 14, 2004, 11:05:52 AM (22 years ago)
Author:
harman
Message:

Fixed memory corruption problem in psVectorRealloc

Location:
trunk/psLib/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/collections/psVector.c

    r672 r689  
    1919 *  @author Ross Harman, MHPCC
    2020 *   
    21  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    22  *  @date $Date: 2004-05-13 23:36:27 $
     21 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     22 *  @date $Date: 2004-05-14 21:05:52 $
    2323 *
    2424 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    104104    elementSize = PSELEMTYPE_SIZEOF(elemType);
    105105
    106 
    107     if(psVec == NULL) {                                 // For creating new psVector
     106    if(psVec == NULL) {                                     // For creating new psVector
    108107        psVec = psVectorAlloc(psVec->type.type, nalloc);
    109     } else if(psVec->nalloc != nalloc) {                // No need to realloc to same size
    110         psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
    111         psVec->nalloc = nalloc;
     108    } else if(psVec->nalloc != nalloc) {                    // No need to realloc to same size
    112109        if(nalloc < psVec->n) {
    113110            if (elemType == PS_TYPE_PTR) {
    114                 for (int i = nalloc; i < psVec->n; i++) {               // For reduction in vector size
     111                for (int i = nalloc; i < psVec->n; i++) {   // For reduction in vector size
    115112                    psMemDecrRefCounter(psVec->vec.vp[i]);
    116113                }
     
    118115            psVec->n = nalloc;
    119116        }
     117
     118        // Realloc after decrementation to avoid accessing freed array elements
     119        psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
     120        psVec->nalloc = nalloc;
    120121    }
    121122
  • trunk/psLib/src/mathtypes/psVector.c

    r672 r689  
    1919 *  @author Ross Harman, MHPCC
    2020 *   
    21  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    22  *  @date $Date: 2004-05-13 23:36:27 $
     21 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     22 *  @date $Date: 2004-05-14 21:05:52 $
    2323 *
    2424 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    104104    elementSize = PSELEMTYPE_SIZEOF(elemType);
    105105
    106 
    107     if(psVec == NULL) {                                 // For creating new psVector
     106    if(psVec == NULL) {                                     // For creating new psVector
    108107        psVec = psVectorAlloc(psVec->type.type, nalloc);
    109     } else if(psVec->nalloc != nalloc) {                // No need to realloc to same size
    110         psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
    111         psVec->nalloc = nalloc;
     108    } else if(psVec->nalloc != nalloc) {                    // No need to realloc to same size
    112109        if(nalloc < psVec->n) {
    113110            if (elemType == PS_TYPE_PTR) {
    114                 for (int i = nalloc; i < psVec->n; i++) {               // For reduction in vector size
     111                for (int i = nalloc; i < psVec->n; i++) {   // For reduction in vector size
    115112                    psMemDecrRefCounter(psVec->vec.vp[i]);
    116113                }
     
    118115            psVec->n = nalloc;
    119116        }
     117
     118        // Realloc after decrementation to avoid accessing freed array elements
     119        psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
     120        psVec->nalloc = nalloc;
    120121    }
    121122
Note: See TracChangeset for help on using the changeset viewer.