Clay, Bruce wrote:
Frank: Thanks for the information. I tried to update to a newer
version of GDAL (I tried both 1.6.1 and 1.7.0) but the both crash on
RegisterAll
In both cases the problem seems to be in the following method
void VSIFileManager::InstallHandler( const std::string& osPrefix,
VSIFilesystemHandler *poHandler )
{ if( osPrefix == "" ) Get()->poDefaultHandler = poHandler; else
Get()->oHandlers[osPrefix] = poHandler; }
The calling methods are passing what appears to be valid strings but
the osPrefix contents in this method always seem to be different that
the calling method. One thing that looks odd although it may be
valid is using std::string as an array index.
The oHandlers is not an array. It is a dictionary implemented using
std::map tree with std::string as key. This is perfectly valid construction.
Try to ensure the following in your own code:
int refCnt = dataSrc->GetSummaryRefCount();
if (refCnt > 0)
{
dataSrc->Release();
}
assert( 0 == dataSrc->GetSummaryRefCount()); // <--- HERE
Cheers,
--
Mateusz Loskot, http://mateusz.loskot.net
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev