[fdo-trac] #415: OGRProvider refcounting is messed up

FDO trac_fdo at osgeo.org
Sun Nov 2 11:06:24 EST 2008

#415: OGRProvider refcounting is messed up
   Reporter:  traianstanev  |       Owner:  traianstanev
       Type:  defect        |      Status:  new         
   Priority:  major         |   Milestone:              
  Component:  OGR Provider  |     Version:  3.2.0       
   Severity:  2             |    Keywords:              
External_id:                |  
 Due to use of multiple inheritance from some FDO interfaces, the OGR
 connection object suffers from a "dreaded diamond" -- there are multiple
 copies of FdoIDisposable in its class layout, since the FDO interfaces do
 not use virtual inheritance from FdoIDisposable (which they should).

 Anyway, the OGR connection does implement a workaround for its
 refcounting, in a way where only the refcount of the copy of
 FdoIDisposable created for the FdoIConnection is the one that we look at
 for deleting the connection. However, now that FdoIDisposable declares
 AddRef and Release as virtual, we can replace the scheme by a simpler
 approach, overriding those functions. It *should* also fix problems with
 garbage collection when used from the managed wrappers.

Ticket URL: <http://trac.osgeo.org/fdo/ticket/415>
FDO <http://fdo.osgeo.org/>
Feature Data Objects

More information about the fdo-trac mailing list