On 26/02/2013 14:11, Rob Kendrick wrote:
On Tue, Feb 26, 2013 at 01:08:33PM +0000, Daniel Silverstone wrote:
> On Tue, Feb 26, 2013 at 01:10:41PM +0100, François Revol wrote:
>> At least on BeOS we can in theory include NetSurf as a replicant, where
>> the binary is dlopen()ed and dlclosed() when removed, so using atexit()
>> would cause quite some trouble there.
>
> If this is *truly* a use-case we need to think about, I'll ponder making the
> root somehow static so it gets unloaded automatically, although that might
> complicate rehashing.
The ugly destructor approach could be workable: if for some reason a
host's compiler doesn't support it, we can wrap it in a suitable #ifdef
and they can deal with the leak.
Or, perhaps we could have some C++ with a real destructor on a singleton
that calls the finialisation code? Not sure how this would interact
with multiple users an dlopen()ing of the whole thing.
Well, C++ dtors are usually called from this method anyway...
it's just more standardized at C++ level.
François.