Opened 15 years ago

Closed 15 years ago

#415 closed defect (fixed)

OGRProvider refcounting is messed up

Reported by: traianstanev Owned by: traianstanev
Priority: major Milestone: 3.4.0
Component: OGR Provider Version: 3.2.0
Severity: 2 Keywords:
Cc: External ID:

Description

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.

Change History (1)

comment:1 by gregboone, 15 years ago

Milestone: 3.4.0
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.