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. B.
