Files
swift-mirror/test/Interpreter/unowned_overflow.swift
Arnold Schwaighofer d8abd2fed9 runtime: Fix overflow of swift_unownedRetain reference counts
On 32bit platforms there are 7 bits reserved for the unowned retain count. This
makes overflow a likely scenario. Implement overflow into the side table.

rdar://33495003
2017-08-02 07:12:47 -07:00

36 lines
531 B
Swift

// RUN: %target-run-simple-swift | %FileCheck %s
// REQUIRES: executable_test
class Owner {
var children: [Child] = []
func addChild(_ c: Child) {
children.append(c)
}
func removeChildren() {
children.removeAll()
}
func test() {
// Overflow of unowned ref count on 32bit.
for _ in 0 ..< 500 {
addChild(Child(self))
}
removeChildren()
}
}
class Child {
unowned var owner: Owner
init(_ o: Owner) {
owner = o
}
}
let o = Owner()
o.test()
print("success")
// CHECK: success