Changeset 249 for Include/system/gc.sbp


Ignore:
Timestamp:
May 15, 2007, 2:44:41 AM (17 years ago)
Author:
dai
Message:

[32bitコンパイラ]ByRef指定のInteger/Byte型のローカル変数に値を代入すると強制終了してしまうバグを修正。
(呼び出し単体コードも対応→)関数の戻り値オブジェクトのメンバ・メソッドを一時オブジェクトを介さずに参照できるようにした。
オブジェクトの先頭バッファのサイズを4ポインタ分に拡張した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Include/system/gc.sbp

    r237 r249  
    288288                    If pdwFlags[index] and _System_GC_FLAG_OBJECT Then
    289289                        ' オブジェクトの場合
    290                         If ScanObject( (ppPtr[index] + 3*SizeOf(LONG_PTR)) As *Object, pbMark) = False Then
     290                        If ScanObject( (ppPtr[index] + 4*SizeOf(LONG_PTR)) As *Object, pbMark) = False Then
    291291                            Dim maxNum = (pSize[index]\SizeOf(LONG_PTR)) As Long
    292292                            Scan(ppPtr[index] As *LONG_PTR, maxNum, pbMark)
     
    371371                        ・オブジェクトのサイズ
    372372                        ・デストラクタの関数ポインタ
     373                        ・リザーブ領域
    373374                        を考慮 */
    374                     _System_SweepingDelete (ptr + SizeOf( LONG_PTR ) * 3 )
     375                    _System_SweepingDelete (ptr + SizeOf( LONG_PTR ) * 4 )
    375376                Else
    376377                    HeapFree(_System_hProcessHeap,0,ptr)
Note: See TracChangeset for help on using the changeset viewer.