From 3f9f054e71f6b835aeb535c868ddc3f19f9a4323 Mon Sep 17 00:00:00 2001 From: "jband%netscape.com" Date: Sat, 22 Apr 2000 06:30:46 +0000 Subject: [PATCH] fix bug 36805 - was leaking xptiInterfaceGuts by unconditionally overwriting a union git-svn-id: svn://10.0.0.236/trunk@66844 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp | 13 +++++++++++++ mozilla/xpcom/reflect/xptinfo/src/xptiprivate.h | 10 +--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mozilla/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp b/mozilla/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp index 53794c7266a..030566a20df 100644 --- a/mozilla/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp +++ b/mozilla/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp @@ -82,6 +82,19 @@ xptiInterfaceInfo::~xptiInterfaceInfo() delete mInterface; } +void +xptiInterfaceInfo::Invalidate() +{ + if(IsValid()) + { + // The order of operations here is important! + xptiTypelib typelib = GetTypelibRecord(); + if(HasInterfaceRecord()) + delete mInterface; + mTypelib = typelib; + mName = nsnull; + } +} PRBool xptiInterfaceInfo::Resolve(xptiWorkingSet* aWorkingSet /* = nsnull */) diff --git a/mozilla/xpcom/reflect/xptinfo/src/xptiprivate.h b/mozilla/xpcom/reflect/xptinfo/src/xptiprivate.h index e8de024c421..422c7a25b4f 100644 --- a/mozilla/xpcom/reflect/xptinfo/src/xptiprivate.h +++ b/mozilla/xpcom/reflect/xptinfo/src/xptiprivate.h @@ -487,15 +487,7 @@ public: PRBool PartiallyResolveLocked(XPTInterfaceDescriptor* aDescriptor, xptiWorkingSet* aWorkingSet); - void Invalidate() - { - if(IsValid()) - { - xptiTypelib typelib = GetTypelibRecord(); - mTypelib = typelib; - mName = nsnull; - } - } + void Invalidate(); private: void CopyName(const char* name,