
24 Dec
2008
24 Dec
'08
4:37 a.m.
As far as I can tell, the only reason your reset() appears to work is that it is inlined in the executable. The compiler doesn't guarantee inlining, so in general it will crash anyway. The solution to this problem is to inject the DLL's lifetime into any shared_ptrs obtained from that DLL; that is, make the shared_ptr keep the DLL afloat. This can be done easily (and non-intrusively) using shared_ptr's aliasing constructor. Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode