Skip to content

Commit b961336

Browse files
committed
[embedded] Check for refcount underflow in embeddded runtime
1 parent bcd7d3f commit b961336

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

stdlib/public/core/EmbeddedRuntime.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ public func swift_release_n(object: Builtin.RawPointer, n: UInt32) {
128128
o.pointee.refcount -= Int(n)
129129
if (o.pointee.refcount & HeapObject.refcountMask) == 0 {
130130
_swift_embedded_invoke_heap_object_destroy(o)
131+
} else if (o.pointee.refcount & HeapObject.refcountMask) < 0 {
132+
fatalError("negative refcount")
131133
}
132134
}
133135

0 commit comments

Comments
 (0)