Unverified Commit e3e6430d authored by Alexander Maryanovsky's avatar Alexander Maryanovsky Committed by GitHub

Fix `RefCnt.toString` to not crash after `_ptr` has been assigned null (#1142)

parent 797ec7b6
......@@ -13,4 +13,18 @@ expect abstract class RefCnt : Managed {
val refCount: Int
}
internal fun RefCnt.refCntToString(managedString: String, nullPointer: NativePointer) = buildString {
append(managedString)
setLength(length - 1) // remove trailing ')'
if (_ptr == nullPointer) {
append(", disposed")
} else {
append(", refCount=")
append(refCount)
}
append(')')
}
internal expect fun RefCnt_nGetFinalizer(): NativePointer
......@@ -14,10 +14,7 @@ actual abstract class RefCnt : Managed {
Reference.reachabilityFence(this)
}
override fun toString(): String {
val s = super.toString()
return s.substring(0, s.length - 1) + ", refCount=" + refCount + ")"
}
override fun toString() = refCntToString(super.toString(), 0L)
private object _FinalizerHolder {
val PTR = _nGetFinalizer()
......
......@@ -14,10 +14,7 @@ actual abstract class RefCnt : Managed {
reachabilityBarrier(this)
}
override fun toString(): String {
val s = super.toString()
return s.substring(0, s.length - 1) + ", refCount=" + refCount + ")"
}
override fun toString() = refCntToString(super.toString(), NullPointer)
private object _FinalizerHolder {
val PTR = RefCnt_nGetFinalizer()
......
......@@ -12,10 +12,7 @@ actual abstract class RefCnt : Managed {
return _nGetRefCount(_ptr)
}
override fun toString(): String {
val s = super.toString()
return s.substring(0, s.length - 1) + ", refCount=" + refCount + ")"
}
override fun toString() = refCntToString(super.toString(), 0)
}
private object _FinalizerHolder {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment