id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc 6755,Improve the efficiency of SHPCreateObject in shpopen.c,sunxunfeng,warmerdam,"To Improve the efficiency of program(SHPCreateObject in shpopen.c) execution: https://trac.osgeo.org/gdal/browser/trunk/gdal/ogr/ogrsf_frmts/shape/shpopen.c Rev 36763 From: {{{ 1516 if( nVertices > 0 ) 1517 { 1518 psObject->padfX = (double *) calloc(sizeof(double),nVertices); 1519 psObject->padfY = (double *) calloc(sizeof(double),nVertices); 1520 psObject->padfZ = (double *) calloc(sizeof(double),nVertices); 1521 psObject->padfM = (double *) calloc(sizeof(double),nVertices); 1522 1523 for( i = 0; i < nVertices; i++ ) 1524 { 1525 if( padfX != NULL ) 1526 psObject->padfX[i] = padfX[i]; 1527 if( padfY != NULL ) 1528 psObject->padfY[i] = padfY[i]; 1529 if( padfZ != NULL && bHasZ ) 1530 psObject->padfZ[i] = padfZ[i]; 1531 if( padfM != NULL && bHasM ) 1532 psObject->padfM[i] = padfM[i]; 1533 } 1534 if( padfM != NULL && bHasM ) 1535 psObject->bMeasureIsUsed = TRUE; 1536 } }}} To: {{{ 1516 if( nVertices > 0 ) 1517 { 1518 int nSize = sizeof(double) * nVertices; 1519 psObject->padfX = (double *) malloc(nSize); 1520 psObject->padfY = (double *) malloc(nSize); 1521 psObject->padfZ = (double *) malloc(nSize); 1522 psObject->padfM = (double *) malloc(nSize); 1523 if( padfX != NULL && psObject->padfX != NULL) 1524 memcpy(psObject->padfX, padfX, nSize); 1525 if( padfY != NULL && psObject->padfY != NULL) 1526 memcpy(psObject->padfY, padfY, nSize); 1527 if( padfZ != NULL && bHasZ && psObject->padfZ != NULL) 1528 memcpy(psObject->padfZ, padfZ, nSize); 1529 if( padfM != NULL && bHasM && psObject->padfM != NULL) 1530 { 1531 memcpy(psObject->padfM, padfM, nSize); 1532 psObject->bMeasureIsUsed = TRUE; 1533 } 1534 } }}} ",enhancement,closed,normal,,default,svn-trunk,normal,fixed,,