Opened 7 years ago
Last modified 7 years ago
#6755 closed enhancement
Improve the efficiency of SHPCreateObject in shpopen.c — at Initial Version
Reported by: | sunxunfeng | Owned by: | warmerdam |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | default | Version: | svn-trunk |
Severity: | normal | Keywords: | |
Cc: |
Description
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 ) 1524 memcpy(psObject->padfX, padfX, nSize); 1525 if( padfY != NULL ) 1526 memcpy(psObject->padfY, padfY, nSize); 1527 if( padfZ != NULL && bHasZ ) 1528 memcpy(psObject->padfZ, padfZ, nSize); 1529 if( padfM != NULL && bHasM ) 1530 { 1531 memcpy(psObject->padfM, padfM, nSize); 1532 psObject->bMeasureIsUsed = TRUE; 1533 } 1534 }
Note:
See TracTickets
for help on using tickets.