- Timestamp:
- Jun 25, 2009, 3:04:07 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/mathtypes/psVector.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/mathtypes/psVector.c
r21183 r24563 77 77 // Create vector data array 78 78 vector->data.U8 = psAlloc(nalloc * elementSize); 79 memset (vector->data.U8, 0, nalloc * elementSize); 79 80 80 81 return vector; … … 119 120 _("psVectorRealloc must a given a non-NULL psVector to resize. Desired datatype unknown.")); 120 121 return NULL; 121 } else if (vector->nalloc != nalloc) { // No need to realloc to same size 122 elemType = vector->type.type; 123 elementSize = PSELEMTYPE_SIZEOF(elemType); 124 if (nalloc < vector->n) { 125 vector->n = nalloc; 126 } 127 // Realloc after decrementation to avoid accessing freed array elements 128 vector->data.U8 = psRealloc(vector->data.U8, nalloc * elementSize); 129 P_PSVECTOR_SET_NALLOC(vector,nalloc); 122 } 123 124 125 if (vector->nalloc == nalloc) { 126 // No need to realloc to same size 127 return vector; 128 } 129 130 elemType = vector->type.type; 131 elementSize = PSELEMTYPE_SIZEOF(elemType); 132 133 long nstart = vector->n; 134 if (nalloc < vector->n) { 135 vector->n = nalloc; 136 } 137 // Realloc after decrementation to avoid accessing freed array elements 138 vector->data.U8 = psRealloc(vector->data.U8, nalloc * elementSize); 139 P_PSVECTOR_SET_NALLOC(vector,nalloc); 140 141 // fill newly allocated range with zeros: 142 if (nstart < nalloc) { 143 long nNew = nalloc - nstart; 144 memset (&vector->data.U8[nstart*elementSize], 0, nNew*elementSize); 130 145 } 131 146 … … 165 180 vector->type.type = type; 166 181 vector->n = nalloc; 182 183 // zero the vector 184 memset (vector->data.U8, 0, byteSize); 185 167 186 return vector; 168 187 }
Note:
See TracChangeset
for help on using the changeset viewer.
