Changeset 13807
- Timestamp:
- 02/17/08 11:03:14 (3 months ago)
- Files:
-
- trunk/gdal/ogr/ogrsf_frmts/generic/ogrsfdriverregistrar.cpp (modified) (7 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ogrsf_frmts.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/gdal/ogr/ogrsf_frmts/generic/ogrsfdriverregistrar.cpp
r13466 r13807 63 63 papoOpenDS = NULL; 64 64 papoOpenDSDriver = NULL; 65 panOpenDSPID = NULL; 65 66 66 67 /* -------------------------------------------------------------------- */ … … 276 277 int iDS; 277 278 CPLMutexHolderD( &hDRMutex ); 279 GIntBig nThisPID = CPLGetPID(); 278 280 279 281 for( iDS = 0; iDS < nOpenDSCount; iDS++ ) … … 281 283 poDS = papoOpenDS[iDS]; 282 284 283 if( strcmp( pszName, papszOpenDSRawName[iDS]) == 0 ) 285 if( strcmp( pszName, papszOpenDSRawName[iDS]) == 0 286 && nThisPID == panOpenDSPID[iDS] ) 284 287 { 285 288 poDS->Reference(); … … 299 302 poDS = papoOpenDS[iDS]; 300 303 301 if( strcmp( pszName, poDS->GetName()) == 0 ) 304 if( strcmp( pszName, poDS->GetName()) == 0 305 && nThisPID == panOpenDSPID[iDS] ) 302 306 { 303 307 poDS->Reference(); … … 336 340 CPLRealloc( papoOpenDSDriver, sizeof(char*) * (nOpenDSCount+1) ); 337 341 342 panOpenDSPID = (GIntBig *) 343 CPLRealloc( panOpenDSPID, sizeof(GIntBig) * (nOpenDSCount+1) ); 344 338 345 papszOpenDSRawName[nOpenDSCount] = CPLStrdup( pszName ); 339 346 papoOpenDS[nOpenDSCount] = poDS; 340 347 papoOpenDSDriver[nOpenDSCount] = poTempDriver; 348 panOpenDSPID[nOpenDSCount] = CPLGetPID(); 341 349 342 350 nOpenDSCount++; … … 428 436 memmove( papoOpenDSDriver + iDS, papoOpenDSDriver + iDS + 1, 429 437 sizeof(char *) * (nOpenDSCount - iDS - 1) ); 438 memmove( panOpenDSPID + iDS, panOpenDSPID + iDS + 1, 439 sizeof(GIntBig) * (nOpenDSCount - iDS - 1) ); 430 440 431 441 nOpenDSCount--; … … 439 449 CPLFree( papoOpenDSDriver ); 440 450 papoOpenDSDriver = NULL; 451 CPLFree( panOpenDSPID ); 452 panOpenDSPID = NULL; 441 453 } 442 454 } trunk/gdal/ogr/ogrsf_frmts/ogrsf_frmts.h
r13483 r13807 273 273 OGRDataSource **papoOpenDS; 274 274 OGRSFDriver **papoOpenDSDriver; 275 GIntBig *panOpenDSPID; 275 276 276 277 public:
