class不具合
Closed this issue · 1 comments
stuncloud commented
概要
- デストラクタが実行されない
NOTHING
代入でデッドロックする
再現コード
class C
dim n
procedure C(n)
this.n = n
fend
procedure _C_()
print "disposed: <#n>"
fend
endclass
c1 = C(1)
c1 = "" // デストラクタが実行されない
c2 = C(2)
c2 = NOTHING // デッドロック
実行環境
- UWSCRバージョン: 0.14.0
stuncloud commented
c2
のケースはデストラクタでクラスメンバを呼んでいて、かつNOTHINGを代入した(ClassInstance::dispose
を呼んだ)場合にデッドロックしている
procedure _C_()
- print "disposed: <#n>"
+ print 1
fend
とすれば動作する
c1のケースはそもそもClassInstance::dispose
が呼ばれていない (ClassInstanceがdropしていない)