On Thursday 2003-09-25 10:46 -0700, L. David Baron wrote: > On Thursday 2003-09-25 16:10 +0200, Ulrich von Zadow wrote: > > What happens is almost too simple and too incredible to believe it: > > Depending on some #define-settings, nsCOMPtr will have a destructor that > > does not make any calls to Release() when it is destroyed. In Debug > > builds, NSCAP_FEATURE_DEBUG_PTR_TYPES is set by default. After some > > pre-processor magic, the empty destructor in > > http://lxr.mozilla.org/seamonkey/source/xpcom/glue/nsCOMPtr.h#402 gets > > compiled while compiling xpcom, and somehow it gets silently used by > > some components. Other messages in n.p.m.* lead us to believe that this > > function is there to prevent unresolved externals. Is is supposed to be > > called at all? What was supposed to prevent it from being called (as > > opposed to being linked)? > > This was the result of the fix to bug 77112 [1], which has been bugging > me (as I mentioned in [2]). It allows debug and optimized code to link > with each other, but as I suspected, the code leaks. > > The solution for you, if possible, is not to mix debug and non-debug > code. > > I think the longer-term solution for us is to change nsCOMPtr_base so > it's the same in DEBUG and non-DEBUG builds, rename it, and leave a copy > of the old version around for binary compatibility. Or something like > that...
I think I found an easier solution, and I filed bug http://bugzilla.mozilla.org/show_bug.cgi?id=220291 and described it there. -David -- L. David Baron <URL: http://dbaron.org/ > _______________________________________________ Mozilla-xpcom mailing list [EMAIL PROTECTED] http://mail.mozilla.org/listinfo/mozilla-xpcom
