[gdal-dev] OGRRegisterAll memory leak

Martin Chapman mchapman at texelinc.com
Sun Dec 30 23:01:08 EST 2007


I have a concern about OGRSFDriverRegistrar.  It appears that when I call
OGRRegisterAll()  the following function is called:

 

OGRSFDriverRegistrar::GetRegistrar()->AutoLoadDrivers();

 

That calls:

 

OGRSFDriverRegistrar *OGRSFDriverRegistrar::GetRegistrar()

 

{

    CPLMutexHolderD( &hDRMutex );

    

    if( poRegistrar == NULL )

        poRegistrar = new OGRSFDriverRegistrar();

 

    return poRegistrar;

}

 

Where poRegistrar is being allocated and is suppose to be destroyed in:

 

void OGRCleanupAll()

 

{

    CPLMutexHolderD( &hDRMutex );

 

    if( poRegistrar != NULL )

        delete poRegistrar;

    OSRCleanup();

    CPLFinderClean();

    VSICleanupFileManager();

    CPLFreeConfig();

    CPLCleanupTLS();

}

 

But that function (OGRCleanupAll) never gets called when my application
closes.  Question: Am I suppose to be calling some method to deallocate
objects allocated in the call to OGRRegisterAll() or is this a bug in
GetRegistrar() or AutoLoadDrivers()?  Should OGRCleanupAll() be called in
that function?

 

I found OGRCleanupAll() declared in ogr_api.h with the following comments
but OGRCleanupAll() is not declared in ogrsf_frmts.h as indicated.

 

/* note: this is also declared in ogrsf_frmts.h */

void CPL_DLL OGRRegisterAll(void);

void CPL_DLL OGRCleanupAll(void);

 

When I inlcude ogr_api,h and call OGRCleanupAll() in my desctructor then all
the memory leaks go away and since OGRCleanupAll() is not being called
anywhere else and as far as I can tell from the website is undocumented
which can easily lead to user created memory leaks.  Thought you guys would
like to know that. Please correct me if I am missing something. 

 

Best regards,

 

Martin Chapman

Chief Software Architect

Fortified Datacom Inc.

http://www.fortifieddatacom.com

mchapman at fortifieddatacom.com

303-324-1065

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20071230/8f721bf5/attachment.html


More information about the gdal-dev mailing list