WeakPtr(const WeakPtr& src) : ptr(src.getRawPtr()) #ifdef WEAK_PTR_HAS_EXTRA_PTR_TO_COUNTERS , heapObjectCounters(HeapObjectRefManipulator::getHeapObjectCounters(ptr)) #endif { ASSERT(this != &src); HeapObjectRefManipulator::incWeakCounter(getHeapObjectCounters()); }
WeakPtr(const WeakPtr<S>& src) { if (src.isValid()) { ptr = src.getRawPtr(); #ifdef WEAK_PTR_HAS_EXTRA_PTR_TO_COUNTERS heapObjectCounters = HeapObjectRefManipulator::getHeapObjectCounters(ptr); #endif HeapObjectRefManipulator::incWeakCounter(getHeapObjectCounters()); } else { ptr = NULL; #ifdef WEAK_PTR_HAS_EXTRA_PTR_TO_COUNTERS heapObjectCounters = NULL; #endif } }