14 Dec
2001
14 Dec
'01
2:33 p.m.
From: "Louis Lavery"
Hello,
The following is use by the boost shared_ptr assignment operators (see boost\smart_ptr.hpp)...
void share(T* rpx, long* rpn) { if (pn != rpn) { // Q: why not px != rpx? A: fails when both == 0 ++*rpn; // done before dispose() in case rpn transitively // dependent on *this (bug reported by Ken Johnson) dispose(); px = rpx; pn = rpn; } } // share
...I curious to know what it means by "fails when both == 0".
It's possible that px == rpx == 0, yet pn != rpn. -- Peter Dimov Multi Media Ltd.