Opened 11 years ago

Closed 11 years ago

#177 closed バグ(ケアレスミス) (fixed)

Thisを使用してのデリゲートの作成がうまくいかない

Reported by: イグトランス (egtra) Owned by: dai
Priority: 低-minor Milestone: AB5 CP6
Component: Compiler Version:
Keywords: デリゲート Cc:

Description

以下のコードでTest (This)とTest (Implicit This)のときにTarget()で出力されるObjPtr(This)とxの値がおかしい。

#console

Delegate Sub MyDelegate()

Class MyClass
Public
	Sub Test()
		Print "[Test] This: " + Hex$(ObjPtr(f))
		Print "[Test] x: " + Hex$(f.x)
		Print "----Test (This)----"
		Dim h = New MyDelegate(AddressOf(This.Target))
		h()
		Print "----Test (別オブジェクト)----"
		Dim r = This
		Dim i = New MyDelegate(AddressOf(r.Target))
		i()
		Print "----Test (Implicit This)----"
		Dim j = New MyDelegate(AddressOf(Target))
		j()
	End Sub

	Sub Target()
		Print "[Target] This: " + Hex$(ObjPtr(This))
		Print "[Target] x: " + Hex$(x)
	End Sub

	x As DWord
End Class


Dim f = New MyClass
f.x = &hc0ffee
f.Test()

Print "----Global----"
Dim h = New MyDelegate(AddressOf(f.Target))
h()

System.Console.ReadLine()

Change History (3)

comment:1 Changed 11 years ago by dai

Status: newassigned

comment:2 Changed 11 years ago by dai

32bit版のみ、[546]にて修正。x64版を後日修正すること。

comment:3 Changed 11 years ago by dai

Resolution: fixed
Status: assignedclosed

[548]にて64bit版の対応を行った。また、本チケットの不具合が生じないことを証明するためのテストケースを[549]にてコミットした。

Note: See TracTickets for help on using tickets.