Changeset 179 in dev


Ignore:
Timestamp:
Jun 20, 2007, 4:55:07 PM (17 years ago)
Author:
dai_9181
Message:

キャスト演算子が変数オフセットが格納されたレジスタ(ecx)を上書きしてしまうバグを修正

File:
1 edited

Legend:

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

    r159 r179  
    588588    }
    589589
     590    if( calcType.IsObject() && !calcType.Equals( varType ) ){
     591        bool isUpCast = false;
     592        if( varType.IsObject() ){
     593            if( varType.GetClass().IsEqualsOrSubClass( &calcType.GetClass() ) ){
     594                isUpCast = true;
     595            }
     596        }
     597        if( !isUpCast ){
     598            //キャスト演算子のオーバーロードに対応する
     599            CallCastOperatorProc(calcType,bCalcUseHeap,varType);
     600        }
     601    }
     602
    590603    //変数アドレスを取得
    591604    if(!GetVarOffsetReadWrite(
     
    603616        SetStructVariable(varType,calcType,bCalcUseHeap);
    604617        return;
    605     }
    606 
    607     if( calcType.IsObject() && !calcType.Equals( varType ) ){
    608         bool isUpCast = false;
    609         if( varType.IsObject() ){
    610             if( varType.GetClass().IsEqualsOrSubClass( &calcType.GetClass() ) ){
    611                 isUpCast = true;
    612             }
    613         }
    614         if( !isUpCast ){
    615             //キャスト演算子のオーバーロードに対応する
    616             CallCastOperatorProc(calcType,bCalcUseHeap,varType);
    617         }
    618618    }
    619619
Note: See TracChangeset for help on using the changeset viewer.