Closed
Bug 445949
Opened 17 years ago
Closed 17 years ago
private dtor ~nsTimerEvent breaks build in nsTimerImpl.cpp
Categories
(Core :: XPCOM, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: ul-mcamafia, Unassigned)
Details
(Keywords: platform)
Attachments
(2 files)
1.00 KB,
patch
|
benjamin
:
review-
|
Details | Diff | Splinter Review |
247 bytes,
text/plain
|
Details |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.16) Gecko/20080702 SeaMonkey/1.1.11
Build Identifier: cvs tag FIREFOX_3_0_1_RELEASE
the private dtor ~nsTimerEvent() cannot be accessed by nsDeriveSafe<nsTimerEvent>::~nsDerivedSafe() in XPCOMPrt.h
bug is similar but not equal to 239465 and 271245
Reproducible: Always
Steps to Reproduce:
1. Compile on AIX 5.1 with VACPP 6.0, no O/S specific code.
Actual Results:
"/home/ulink/Src/mozilla/xpcom/threads/nsTimerImpl.cpp", line 461.3:
1540-0300 (S) The "private" member "nsTimerEvent::~nsTimerEvent()"
cannot be accessed.
"../../dist/include/xpcom/nsCOMPtr.h", line 187.7: 1540-0719 (I) The
previous message was produced while processing the implicit member
function "nsDerivedSafe<nsTimerEvent>::~nsDerivedSafe()".
"../../dist/include/xpcom/nsCOMPtr.h", line 187.7: 1540-0700 (I) The
previous message was produced while processing "class
nsDerivedSafe<nsTimerEvent>".
"/home/ulink/Src/mozilla/xpcom/threads/nsTimerImpl.cpp", line 495.10:
1540-0700 (I) The previous message was produced while processing
"nsTimerImpl::PostTimerEvent()".
Expected Results:
successful build in directory xpcom/threads
patch suggested:
Index: mozilla/xpcom/threads/nsTimerImpl.cpp
===================================================================
RCS file: /cvsroot/mozilla/xpcom/threads/nsTimerImpl.cpp,v
retrieving revision 1.46
diff -u -8 -p -r1.46 nsTimerImpl.cpp
--- mozilla/xpcom/threads/nsTimerImpl.cpp 10 Mar 2008 21:05:46 -0000
1.46
+++ mozilla/xpcom/threads/nsTimerImpl.cpp 18 Jul 2008 07:20:53 -0000
@@ -452,24 +452,27 @@ public:
// timer is already addref'd for us
MOZ_COUNT_CTOR(nsTimerEvent);
}
#ifdef DEBUG_TIMERS
PRIntervalTime mInitTime;
#endif
-private:
+// make private dtor accessible for nsDeriveSafe later
+// private dtor breaks build like Bug 239465 and 271245
+protected:
~nsTimerEvent() {
#ifdef DEBUG
if (mTimer)
NS_WARNING("leaking reference to nsTimerImpl");
#endif
MOZ_COUNT_DTOR(nsTimerEvent);
}
+ private:
nsTimerImpl *mTimer;
PRInt32 mGeneration;
};
NS_IMETHODIMP nsTimerEvent::Run()
{
nsRefPtr<nsTimerImpl> timer;
Reporter | ||
Updated•17 years ago
|
Version: unspecified → 1.9.0 Branch
Reporter | ||
Comment 1•17 years ago
|
||
The build environment can produce a working Firefox 2.0.0.16 and Seamonkey 1.1.11
Reporter | ||
Updated•17 years ago
|
Keywords: checkin-needed,
platform
OS: Other → AIX
Reporter | ||
Comment 2•17 years ago
|
||
Attachment #331299 -
Flags: review?
Attachment #331299 -
Flags: approval1.9.0.2?
Reporter | ||
Updated•17 years ago
|
Attachment #331299 -
Flags: review? → review?(benjamin)
Reporter | ||
Updated•17 years ago
|
Attachment #331299 -
Flags: approval1.9.0.2?
Reporter | ||
Updated•17 years ago
|
Keywords: checkin-needed
Reporter | ||
Comment 3•17 years ago
|
||
Comment on attachment 331299 [details] [diff] [review]
suggested patch for making dtor accessible
make the dtor protected is the minimal change for making nsTimerImpl.cpp compile with VACPP 6
Reporter | ||
Comment 4•17 years ago
|
||
This is the stderr output compiling with VisualAge 6:
$ /usr/vacpp/bin/xlC testcase.cpp -o test-vac
"testcase.cpp", line 17.3: 1540-0300 (S) The "private" member "A::~A()" cannot b
e accessed.
"testcase.cpp", line 2.7: 1540-0719 (I) The previous message was produced while
processing the implicit member function "D<class A>::~D()".
"testcase.cpp", line 27.3: 1540-0700 (I) The previous message was produced while
processing "main()".
And this is the output of compilation with GCC 3.3.2:
$ g++ testcase.cpp -Wall -o test
testcase.cpp:9: warning: `class A' only defines a private destructor and has no
friends
testcase.cpp: In constructor `D<T>::D() [with T = A]':
testcase.cpp:26: instantiated from here
testcase.cpp:18: error: `A::~A()' is private
testcase.cpp:5: error: within this context
testcase.cpp: In destructor `D<A>::~D()':
testcase.cpp:18: error: `A::~A()' is private
testcase.cpp:26: error: within this context
$
making A::~A() protected (or public) and testcase.cpp compiles with both compilers w/o errors or warnings.
Reporter | ||
Updated•17 years ago
|
Version: 1.9.0 Branch → Trunk
Comment 5•17 years ago
|
||
Fixed by bug 279210
Status: UNCONFIRMED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Updated•17 years ago
|
Attachment #331299 -
Flags: review?(benjamin) → review-
You need to log in
before you can comment on or make changes to this bug.
Description
•