>> I take it the refcount field's pointer is itself considered a weak 
>> reference, so the weak refcount starts +1 like the unowned refcount does?
> 
> You need to do something to make sure the side allocation is not freed if the 
> object is live with no weak references to it. Biasing the weak refcount might 
> work. 
> 
> It might be more robust to do something else, though. Ideally an incorrect 
> weak reference decrement would deliberately log an underflow error and halt, 
> instead of quietly freeing the side allocation out from under a live object.

The backreference from the side allocation could be used to indicate the 
object's liveness. Require the object to null that pointer before it performs 
its weak release; then if the weak refcount goes to zero before the 
backreference is null, you've had an unbalanced release.

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to