Ignore:
Timestamp:
Mar 15, 2008, 3:33:36 PM (17 years ago)
Author:
dai_9181
Message:

関数の戻り値の構造体など、一時メモリに保持された構造体のメンバに直接アクセスした場合、その一時メモリの解放が正常に行われないバグを修正(64bit版も修正した)。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_Var.cpp

    r424 r436  
    116116    for(i=i3-1;i>=0;i--){
    117117        Type tempType;
    118         BOOL bUseHeap;
    119         NumOpe( pParm[i], Type( DEF_LONG ), tempType, &bUseHeap );
    120         if( tempType.IsObject() ){
     118        bool isNeedHeapFreeStructure;
     119        NumOpe( pParm[i], Type( DEF_LONG ), tempType, &isNeedHeapFreeStructure );
     120        if( tempType.IsObject() )
     121        {
    121122            //キャスト演算子のオーバーロードに対応する
    122123            CallCastOperatorProc(
    123124                tempType,
    124                 bUseHeap, Type(DEF_LONG) );
     125                isNeedHeapFreeStructure, Type(DEF_LONG) );
    125126            tempType.SetBasicType( DEF_LONG );
    126127        }
     
    130131        compiler.codeGenerator.op_pop(REG_EAX);
    131132
    132         for(i2=i+1,i4=1;i2<i3;i2++) i4*=subscripts[i2]+1;
     133        for( i2=i+1, i4=1; i2<i3; i2++ )
     134        {
     135            i4*=subscripts[i2]+1;
     136        }
    133137
    134138        //imul eax,i4
Note: See TracChangeset for help on using the changeset viewer.